github.com/grpc-ecosystem/grpc-gateway/v2@v2.19.1/examples/internal/proto/examplepb/echo_service.proto (about) 1 syntax = "proto3"; 2 3 // Echo Service 4 // 5 // Echo Service API consists of a single service which returns 6 // a message. 7 package grpc.gateway.examples.internal.proto.examplepb; 8 9 import "google/api/annotations.proto"; 10 import "google/protobuf/field_mask.proto"; 11 import "google/protobuf/struct.proto"; 12 13 option go_package = "github.com/grpc-ecosystem/grpc-gateway/v2/examples/internal/proto/examplepb"; 14 15 // Embedded represents a message embedded in SimpleMessage. 16 message Embedded { 17 oneof mark { 18 int64 progress = 1; 19 string note = 2; 20 } 21 } 22 23 message NestedMessage { 24 string n_id = 1; 25 string val = 2; 26 } 27 28 // SimpleMessage represents a simple message sent to the Echo service. 29 message SimpleMessage { 30 // Id represents the message identifier. 31 string id = 1; 32 int64 num = 2; 33 oneof code { 34 int64 line_num = 3; 35 string lang = 4; 36 } 37 Embedded status = 5; 38 oneof ext { 39 int64 en = 6; 40 Embedded no = 7; 41 } 42 string resource_id = 8; 43 NestedMessage n_id = 9; 44 } 45 46 // DynamicMessage represents a message which can have its structure 47 // built dynamically using Struct and Values. 48 message DynamicMessage { 49 google.protobuf.Struct struct_field = 1; 50 google.protobuf.Value value_field = 2; 51 } 52 53 message DynamicMessageUpdate { 54 DynamicMessage body = 1; 55 google.protobuf.FieldMask update_mask = 2; 56 } 57 58 // Echo service responds to incoming echo requests. 59 service EchoService { 60 // Echo method receives a simple message and returns it. 61 // 62 // The message posted as the id parameter will also be 63 // returned. 64 rpc Echo(SimpleMessage) returns (SimpleMessage) { 65 option (google.api.http) = { 66 post: "/v1/example/echo/{id}" 67 additional_bindings {get: "/v1/example/echo/{id}/{num}"} 68 additional_bindings {get: "/v1/example/echo/{id}/{num}/{lang}"} 69 additional_bindings {get: "/v1/example/echo1/{id}/{line_num}/{status.note}"} 70 additional_bindings {get: "/v1/example/echo2/{no.note}"} 71 additional_bindings {get: "/v1/example/echo/resource/{resource_id}"} 72 additional_bindings {get: "/v1/example/echo/nested/{n_id.n_id}"} 73 }; 74 } 75 // EchoBody method receives a simple message and returns it. 76 rpc EchoBody(SimpleMessage) returns (SimpleMessage) { 77 option (google.api.http) = { 78 post: "/v1/example/echo_body" 79 body: "*" 80 additional_bindings { 81 put: "/v1/example/echo_body/{id}" 82 body: "no" 83 } 84 }; 85 } 86 // EchoDelete method receives a simple message and returns it. 87 rpc EchoDelete(SimpleMessage) returns (SimpleMessage) { 88 option (google.api.http) = {delete: "/v1/example/echo_delete"}; 89 } 90 // EchoPatch method receives a NonStandardUpdateRequest and returns it. 91 rpc EchoPatch(DynamicMessageUpdate) returns (DynamicMessageUpdate) { 92 option (google.api.http) = { 93 patch: "/v1/example/echo_patch" 94 body: "body" 95 }; 96 } 97 // EchoUnauthorized method receives a simple message and returns it. It must 98 // always return a google.rpc.Code of `UNAUTHENTICATED` and a HTTP Status code 99 // of 401. 100 rpc EchoUnauthorized(SimpleMessage) returns (SimpleMessage) { 101 option (google.api.http) = {get: "/v1/example/echo_unauthorized"}; 102 } 103 }