github.com/grpc-ecosystem/grpc-gateway/v2@v2.19.1/examples/internal/proto/examplepb/flow_combination.proto (about) 1 syntax = "proto3"; 2 3 package grpc.gateway.examples.internal.proto.examplepb; 4 5 import "google/api/annotations.proto"; 6 7 option go_package = "github.com/grpc-ecosystem/grpc-gateway/v2/examples/internal/proto/examplepb"; 8 9 message EmptyProto {} 10 11 message NonEmptyProto { 12 string a = 1; 13 string b = 2; 14 string c = 3; 15 } 16 17 message UnaryProto { 18 string str = 1; 19 } 20 21 message NestedProto { 22 UnaryProto a = 1; 23 string b = 2; 24 string c = 3; 25 } 26 27 message SingleNestedProto { 28 UnaryProto a = 1; 29 } 30 31 service FlowCombination { 32 rpc RpcEmptyRpc(EmptyProto) returns (EmptyProto) { 33 option (google.api.http) = {post: "/rpc/empty/rpc"}; 34 } 35 rpc RpcEmptyStream(EmptyProto) returns (stream EmptyProto) { 36 option (google.api.http) = {post: "/rpc/empty/stream"}; 37 } 38 rpc StreamEmptyRpc(stream EmptyProto) returns (EmptyProto) { 39 option (google.api.http) = {post: "/stream/empty/rpc"}; 40 } 41 rpc StreamEmptyStream(stream EmptyProto) returns (stream EmptyProto) { 42 option (google.api.http) = {post: "/stream/empty/stream"}; 43 } 44 45 rpc RpcBodyRpc(NonEmptyProto) returns (EmptyProto) { 46 option (google.api.http) = { 47 // w/ body; w/o path; w/o query 48 post: "/rpc/body/rpc" 49 body: "*" 50 51 // w/o body; w/ path; w/o query 52 additional_bindings {post: "/rpc/path/{a}/{b}/{c}/rpc"} 53 // w/o body; w/o path; w/ query 54 additional_bindings {post: "/rpc/query/rpc"} 55 // w/ body; w/ path; w/o query 56 additional_bindings { 57 post: "/rpc/body/path/{a}/{b}/rpc" 58 body: "c" 59 } 60 // w/ body; w/o path; w/ query 61 additional_bindings { 62 post: "/rpc/body/query/rpc" 63 body: "c" 64 } 65 // w/ body; w/ path; w/ query 66 additional_bindings { 67 post: "/rpc/body/path/{a}/query/rpc" 68 body: "c" 69 } 70 // w/o body; w/ path; w/ query 71 additional_bindings {post: "/rpc/path/{a}/query/rpc"} 72 }; 73 } 74 rpc RpcPathSingleNestedRpc(SingleNestedProto) returns (EmptyProto) { 75 option (google.api.http) = { 76 // w/o body; w/ path (IsNestedProto3); w/o query 77 post: "/rpc/path-nested/{a.str}/rpc" 78 }; 79 } 80 rpc RpcPathNestedRpc(NestedProto) returns (EmptyProto) { 81 option (google.api.http) = { 82 // w/ body; w/ path (IsNestedProto3); w/o query 83 post: "/rpc/path-nested/{a.str}/{b}/rpc" 84 body: "c" 85 86 // w/o body; w/ path (IsNestedProto3); w/ query 87 additional_bindings {post: "/rpc/path-nested1/{a.str}/rpc"} 88 // w/ body; w/ path (IsNestedProto3); w/ query 89 additional_bindings { 90 post: "/rpc/path-nested2/{a.str}/rpc" 91 body: "c" 92 } 93 }; 94 } 95 96 rpc RpcBodyStream(NonEmptyProto) returns (stream EmptyProto) { 97 option (google.api.http) = { 98 // w/ body; w/o path; w/o query 99 post: "/rpc/body/stream" 100 body: "*" 101 102 // w/o body; w/ path; w/o query 103 additional_bindings {post: "/rpc/path/{a}/{b}/{c}/stream"} 104 // w/o body; w/o path; w/ query 105 additional_bindings {post: "/rpc/query/stream"} 106 // w/ body; w/ path; w/o query 107 additional_bindings { 108 post: "/rpc/body/path/{a}/{b}/stream" 109 body: "c" 110 } 111 // w/ body; w/o path; w/ query 112 additional_bindings { 113 post: "/rpc/body/query/stream" 114 body: "c" 115 } 116 // w/ body; w/ path; w/ query 117 additional_bindings { 118 post: "/rpc/body/path/{a}/query/stream" 119 body: "c" 120 } 121 // w/o body; w/ path; w/ query 122 additional_bindings {post: "/rpc/path/{a}/query/stream"} 123 }; 124 } 125 rpc RpcPathSingleNestedStream(SingleNestedProto) returns (stream EmptyProto) { 126 option (google.api.http) = { 127 // w/o body; w/ path (IsNestedProto3); w/o query 128 post: "/rpc/path-nested/{a.str}/stream" 129 }; 130 } 131 rpc RpcPathNestedStream(NestedProto) returns (stream EmptyProto) { 132 option (google.api.http) = { 133 // w/ body; w/ path (IsNestedProto3); w/o query 134 post: "/rpc/path-nested/{a.str}/{b}/stream" 135 body: "c" 136 137 // w/o body; w/ path (IsNestedProto3); w/ query 138 additional_bindings {post: "/rpc/path-nested1/{a.str}/stream"} 139 // w/ body; w/ path (IsNestedProto3); w/ query 140 additional_bindings { 141 post: "/rpc/path-nested2/{a.str}/stream" 142 body: "c" 143 } 144 }; 145 } 146 }