-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
protoc-gen-openapiv2: support overriding path parameter names #2562
protoc-gen-openapiv2: support overriding path parameter names #2562
Conversation
Codecov Report
@@ Coverage Diff @@
## master #2562 +/- ##
==========================================
- Coverage 60.99% 60.95% -0.05%
==========================================
Files 38 38
Lines 4933 4945 +12
==========================================
+ Hits 3009 3014 +5
- Misses 1594 1599 +5
- Partials 330 332 +2
Continue to review full report at Codecov.
|
@@ -2272,6 +2160,120 @@ | |||
] | |||
} | |||
}, | |||
"/v1/example/a_bit_of_everything/{uuid}": { | |||
"get": { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note - get
and put
switched order in the generated swagger.json, as I didn't add the path_param_name
override to grpc.gateway.examples.internal.proto.sub2.IdMessage
(the request message in used by the get
operation), and then introduced a new path only for some of the operations. This makes it a bit more difficult to compare this file.
// Alternative parameter name when used as path parameter. If set, this will | ||
// be used as the complete parameter name when this field is used as a path | ||
// parameter. Use this to avoid having auto generated path parameter names | ||
// for overlapping paths. | ||
string path_param_name = 47; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I appreciate the initiative in opening this PR, but I think, so far, we've only added fields here for valid fields of the equivalent OpenAPIv2 spec object, which in this case is the Schema
object: https://github.com/OAI/OpenAPI-Specification/blob/3.0.0/versions/2.0.md#schemaObject. Adding this field breaks this pattern. Is there some alternative way we can inject this information?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's a fair point, and the same thought struck me as well when implementing this. How about introducing separate options for configuring the behaviour of the generator to keep it separated from the OpenAPI objects? It looks like that requires a separate assigned message id in annotations.proto
though
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So now that I've eaten my own dog food regarding the path parameters, the automatic name generation kinda sucks (just as outlined above) especially when you start to have a lot of API endpoints that all have a similar structure. I've also discovered a bug (though I don't have reproduction steps) where you can get duplicate endpoints generated for the same actual API endpoint. (I'll figure out a simple repro so I can file it at some point).
I really love the idea of being able to name the path parameters but i also understand @johanbrandhorst point that the openapiv2 proto is really meant for openapi2 specific attributes.
I'd really love it if we could have some way of doing this. I'm not sure what the best way is though. Adding and additional extension just for this one concept is a pretty big ask as the field number would have to be assigned by the protobuf-global-extension-registry.
But adding a field to the JSONSchema message also seems wrong.
Maybe there could be a special syntax of the google.api.http attribute that specifies the name as it would be in the URL like:
option(google.api.http) = {
get: "/v1/{name=foo/*:fooName}"
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't want to go down the path of having the openapiv2 generator mess with the http.proto annotations either (they are separate today). Is this operation something that can be done as a post-processing step of the swagger file? Maybe the best option here is to provide some tooling for users to perform post-processing of names... though that would require keeping a mapping somewhere.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point about post processing, but it won't work well, as the operations get mixed between paths. It's not just a matter of replacing {name}
and {name_1}
. Both the path and the parameter name must be replaced as well.
IMO, JSONSchema
is specific to protoc-gen-openapiv2 (just look at all the reserved fields), and could contain fields that doesn't correspond to the OpenAPI spec. We could jump field numbers to 1000 for the fields related to transformation.
Note that extension 1042 is reserved for "grpc-gateway protoc-gen-swagger", so it's this project that decides how it's used: https://chromium.googlesource.com/chromium/src/+/refs/heads/main/third_party/protobuf/docs/options.md
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that my change to make the specification valid makes this solution impossible with any version of grpc-gateway beyond 2.7.1
I agree - the post processing depends on an invalid OpenAPI file, which is kind of the wrong starting point. The context needed to do the post processing is lost in the valid file. It could be possible to rewrite the post processing to use the pattern
field of path parameters though.
If going down this route, we could as well include the same logic in the generator, and enable it with a CLI argument. I'm still not entirely happy about it, as there is no way to provide parameter descriptions and examples.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just realised that supporting paths transforms like {name=shelves/*}
-> shelves/{shelf_id}
requires a stemming dictionary to find the singular (to avoid results like shelves/{shelve_id}
). This makes me even more uncertain of this approach.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm slightly lost, are we suggesting that neither post processing nor annotations are going to work?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@johanbrandhorst apologies for late follow up from my side.
Regarding post processing as suggested by @dgparker : This no longer works due to @yinzara 's path fixes. Also, as discussed in issue #720 this approach has several shortcomings; the generated path parameters lacks descriptions, type information, and examples values. Also, as pointed out above, creating singular from plural isn't straight forward in English. I suggest we continue the discussion on how to generate path parameters from a path template in that issue (e.g {name=shelves/*/book/*}
-> shelves/{shelf_id}/books/{book_id}
).
This PR suggests an annotation to override the generated path parameter (name, name_1, name_2, etc.). This path parameter would use the same description, type, and example value as currently used. The only issue raised with this PR is that it will introduce a field to JSONSchema
that isn't a part of the OpenAPI v2 specification. Technically, this PR works fine.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the update. I see we need a rebase/merge of this PR, but I think unless there are strong objects from others that adding the annotation might be okay. This is a very real request from users and I'm keen to allow this to be configured.
I think this could work. I'm not too worried about new fields being added to the OpenAPIv2 spec definition of JSONSchema since that version is pretty much deprecated already. I would welcome @ivucica's thoughts on this as well.
Putting this in FieldConfiguration, as proposed later in this thread, LGTM.
I have not looked at the code. Please let me know if you’d like me to do that as well.
|
@oyvindwe, to be clear, I think we have consensus on an approach - when/if you find the time, please rebase and move the field configuration into a |
9eb36ab
to
bdf1b05
Compare
Rebased and moved field configuration to separate message! |
bdf1b05
to
3c614b5
Compare
@johanbrandhorst any documentation that needs to be updated as well? |
It certainly would be nice to add a little blurb to the openAPI mapping doc: https://github.com/grpc-ecosystem/grpc-gateway/blob/master/docs/docs/mapping/customizing_openapi_output.md! |
Added! |
Super excited to use this feature with my team! It will really help our developers who prefer the Swagger UI to our gRPC UI. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One small comment, this looks generally great!
@@ -314,6 +314,8 @@ type openapiSchemaObject struct { | |||
MaxProperties uint64 `json:"maxProperties,omitempty" yaml:"maxProperties,omitempty"` | |||
MinProperties uint64 `json:"minProperties,omitempty" yaml:"minProperties,omitempty"` | |||
Required []string `json:"required,omitempty" yaml:"required,omitempty"` | |||
|
|||
PathParamName string `json:"-" yaml:"-"` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we add a FieldConfiguration
struct here too to encapsulate potential future additions?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done! Also reran the code generation, as expected this did not generate any more changes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like there are some failing tests 😬
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed, but I'm not sure if this is the right way to fix it (see comment below).
…rn as in JSONSchema.
@@ -314,6 +314,8 @@ type openapiSchemaObject struct { | |||
MaxProperties uint64 `json:"maxProperties,omitempty" yaml:"maxProperties,omitempty"` | |||
MinProperties uint64 `json:"minProperties,omitempty" yaml:"minProperties,omitempty"` | |||
Required []string `json:"required,omitempty" yaml:"required,omitempty"` | |||
|
|||
FieldConfiguration fieldConfiguration `json:"-" yaml:"-"` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The tests failed when I made this a pointer. Is it OK to have like this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thinking a bit more about it, this is a struct that's supposed to define the shape of the OpenAPI Schema object, and this field doesn't exist in that object. Is there some other way we can smuggle the path parameter mapping from the annotations into the schema rendering? This feels like a hack.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point. I made a separate method to get the JSONSchema_FieldConfiguration
. It means an additional call to getFieldOpenAPIOption()
, but I got rid of redundant calls to set pathParamName
, so I think this is cleaner.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Kinda regret not waiting to push out v2.9.0 now, but there are no rules against making more releases so I think this should make it into v2.10.0! |
Ah, I saw 2.9.0 being released and assumed this was in. It with be great with 2.10.0 that also includes PRs #2599 and #2600 when they are accepted. (We depend on the fix in #2600, but we're not hit by #2599.) |
You're releasing faster than I brew cups of coffee! :-D I guess above mentioned fixes are good candidates for 2.10.1? |
Indeed |
[![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 [@​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 [@​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 [@​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 [@​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 [#​2635](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/2635) by [@​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 - [@​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) - [@​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 [@​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 [@​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 ([#​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 [@​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 [@​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 - [@​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 [@​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 [#​2531](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/2531) by [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 \[[#​2795](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/2795)] by [@​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 \[[#​2645](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/2645)] by [@​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 [@​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 - [@​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) - [@​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) - [@​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) - [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 - [@​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) - [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 - [@​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) - [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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 ([#​2591](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/2591)) by [@​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 [@​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 - [@​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 [@​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 [@​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 [@​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 [@​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 - [@​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) - [@​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) - [@​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) - [@​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 ([#​1670](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1670) and [#​1015](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1015)). #### What's Changed - Include Package in Service Tags when Option is Enabled by [@​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 [@​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 [@​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 - [@​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) - [@​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) - [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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 [@​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 [#​407](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/407) and [#​1700](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1700) - google.api.http path parameter constraints and multiple HTTP path/method endpoint support by [@​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 - [@​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) - [@​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 [@​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 [@​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 ([#​2398](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/2398))" by [@​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 - [@​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) - [@​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) - [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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 ([@​irridia](https://togithub.com/irridia)) in [#​2215](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/2215) - More comprehensive openapiv2 name generation options contributed by [@​alperengozeten](https://togithub.com/alperengozeten) and Malte Isberner ([@​misberner](https://togithub.com/misberner)) in [#​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 ([#​2314](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/2314)), better `google.protobuf.Any` representation in openapiv2 files ([#​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 [@​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 [@​electrofelix](https://togithub.com/electrofelix) for the contribution! #### Other changes - implements a max recursive depth check by [@​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 [@​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 [#​500](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/500) by [@​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 [@​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 [@​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 [@​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 - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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 [#​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 [#​1766](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1766) **Closed issues:** - grpc-gateway service run error [#​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) [#​1989](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1989) - Grpc healthcheck docs are unclear [#​1977](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1977) - Gateway protoc does not generate protoreflect.ProtoMessage messages [#​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 [#​1941](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1941) - Non official implementation [#​1940](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1940) - Empty fields included in response. [#​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) [#​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) [#​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) [#​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) [#​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) [#​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) [#​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) [#​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) [#​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) [#​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) [#​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) [#​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) [#​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) [#​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) [#​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 [#​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) [#​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) [#​1974](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1974) ([renovate\[bot\]](https://togithub.com/apps/renovate)) - adding UnimplementedGreeterServer to server struct [#​1973](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1973) ([nwandabridges](https://togithub.com/nwandabridges)) - \[Bazel] Update protobuf, rules_go and gazelle [#​1972](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1972) ([aaliddell](https://togithub.com/aaliddell)) - Migrate generation, linting to buf [#​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) [#​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) [#​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 [#​1967](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1967) ([dependabot\[bot\]](https://togithub.com/apps/dependabot)) - docs/Gemfile.lock: Fix dependabot security warning [#​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) [#​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) [#​1964](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1964) ([renovate\[bot\]](https://togithub.com/apps/renovate)) - Update CONTRIBUTING.md on release description [#​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 [#​1951](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1951) ([adambabik](https://togithub.com/adambabik)) - FAQ Adding related projects to the documentation [#​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 [#​1937](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1937) - Duplicate tags seen in Swagger Specification [#​1913](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1913) - Poor error message when using message in path parameter [#​1863](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1863) **Closed issues:** - can we add HTTPStatusFromCode to mux? [#​1954](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1954) - Missing types in generated gw.go file for C++ server [#​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 [#​1931](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1931) - Patch request with field_masks [#​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. [#​1924](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1924) - Action Required: Fix Renovate Configuration [#​1918](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1918) - F [#​1917](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1917) - Is any method to access the raw request body in metadata? [#​1908](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1908) - Custom incoming header matcher isn't working as expected [#​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 [#​1901](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1901) - Is it possible to setup CORS? [#​1889](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1889) **Merged pull requests:** - Add documenation for standalone gateway generation [#​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) [#​1953](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1953) ([renovate\[bot\]](https://togithub.com/apps/renovate)) - Make fieldmask parser output deterministic [#​1950](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1950) ([johanbrandhorst](https://togithub.com/johanbrandhorst)) - Update golang Docker tag to v1.15.8 (master) [#​1949](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1949) ([renovate\[bot\]](https://togithub.com/apps/renovate)) - Fix verb parsing [#​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) [#​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 [#​1944](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1944) ([gganley](https://togithub.com/gganley)) - Update dependency com_github_bazelbuild_buildtools to v4 (master) [#​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) [#​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) [#​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=-->
References to other Issues or PRs
Make the automatic generated path parameters introduced in PR #2461 configurable.
Have you read the Contributing Guidelines?
Yes.
Brief description of what is fixed or changed
Added a new proto option to fields:
path_param_name
. Alternative parameter name when used as path parameter. If set, this will be used as the complete parameter name when this field is used as a path parameter. Use this to avoid having auto generated path parameter names for overlapping paths.This is useful for large APIs that follows the Google API guidelines and have a lot of services/HTTP bindings with overlapping paths, e.g. the following hypothetical paths using in HTTP bindings for 2 different services in the same API:
/v1/{name=shelves/*/books/*}
/v1/{parent=shelves/*}
/v1/{name=floors/*/rooms/*}
/v1/{parent=floors/*}
This will currently generate the following paths:
/v1/{name}
/v1/{parent}
/v1/{name_1}
/v1/{parent_1}
Additionally, the operations are mixed and matched between the paths.
/v1/{name}
could be the path for PUT/v1/{name=shelves/*/books/*}
and PATCH for/v1/{name=floors/*/rooms/*}
, which may be more or less confusing, depending on the tool used to render the OpenAPI specification file.With this change, it's possible to override the path parameter name in the fields that are used in that path. Consider the following messages used in the operations with the above bindings and paths:
This will generate the following paths:
/v1/{bookName}
/v1/{shelfName}
/v1/{roomName}
/v1/{floorName}
Also, operations for the same resource will not be mixed across the paths, as they now are unique.
If a duplicate path is encountered when applying
path_param_name
, the existing numbering logic is still used.Other comments
Note - the path parameter is expected to be in camelCase if JSON format is used.