Example and pattern annotations are not respect for query and path parameters
pafrench opened this issue Β· comments
π Bug Report
Using the sample proto below, only default
appears in the output json - example
and pattern
do not.
To Reproduce
message GetTileForImageRequest {
// The unique reference number of the image.
string image_urn = 1 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
example: "urn:eagleview.com:v4:spatial-data:raster:visual:ated:QIgDbfZw-kqKfTxbMQXwhw:0",
default: "urn:eagleview.com:v4:spatial-data:raster:visual:ated:QIgDbfZw-kqKfTxbMQXwhw:0",
pattern: "^(urn:eagleview\\.com:v\\d+:spatial-data:\\w+:\\w+:\\w+:[A-Za-z0-9-_]+):(\\d+)$",
}];
}
I'm using buf
to generate the swagger using the following template:
buf.gen.swagger.yaml:
version: v1
plugins:
- name: openapiv2
out: build/go
opt:
- json_names_for_fields=false
- visibility_restriction_selectors=LATEST
$ buf generate --template buf.gen.swagger.yaml --path proto/evt/iw/service
Expected behaviour
{
"name": "image_urn",
"description": "The unique reference number of the image.",
"in": "path",
"required": true,
"type": "string",
"example": "urn:eagleview.com:v4:spatial-data:raster:visual:ated:QIgDbfZw-kqKfTxbMQXwhw:0",
"default": "urn:eagleview.com:v4:spatial-data:raster:visual:ated:QIgDbfZw-kqKfTxbMQXwhw:0",
"pattern": "^(urn:eagleview\\.com:v\\d+:spatial-data:\\w+:\\w+:\\w+:[A-Za-z0-9-_]+):(\\d+)$"
}
Actual Behavior
{
"name": "image_urn",
"description": "The unique reference number of the image.",
"in": "path",
"required": true,
"type": "string",
"default": "urn:eagleview.com:v4:spatial-data:raster:visual:ated:QIgDbfZw-kqKfTxbMQXwhw:0"
}
Your Environment
$ uname -a
Linux 0664eeb787b5 5.14.0-1049-oem #56-Ubuntu SMP Fri Aug 12 10:23:08 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
$ protoc --version
libprotoc 25.3
Package | Version |
---|---|
github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway | v2.19.1 |
github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2 | v2.19.1 |
google.golang.org/protobuf/cmd/protoc-gen-go | v1.32.0 |
Hm, that's odd, in our example protobuf file you can see that the example and pattern both make it into the generated file:
grpc-gateway/examples/internal/proto/examplepb/a_bit_of_everything.proto
Lines 193 to 202 in c2720cd
grpc-gateway/examples/internal/proto/examplepb/a_bit_of_everything.swagger.json
Lines 7795 to 7809 in c2720cd
Could you provide a test repo that reproduces the issue? Or better yet, make a contribution to our repo that exhibits the issue.
Please find attached a zip of a sample repo. that reproduces the issue.
imagery-warehouse-api-public-lite.zip
Thank you, with all due respect, I'm not going to download a zip file from a stranger on the internet. Could you please provide a github repository or gist or something where I can view the contents? Thanks.
Sorry, that invitation expired, my bad, could you send it again please?
OK I can reproduce the issue. Seems like we only render the example when the field in question is used in the request body, not when it's part of the path or the query. I think we should be able to support including the example and other fields for non-body fields too.
Would you be interested in contributing a fix for this?
Would you be interested in contributing a fix for this?
I'd like to but honestly I don't have the spare time outside of work. However, we do have time set aside to work on innovation (exploration tasks). I could potentially work on this then (but we've just finished this iteration's task, so the next will be in a month or so).