// todo generate the protobuf code here // delete the templates code start syntax = "proto3"; package api.serverNameExample.v1; import "validate/validate.proto"; import "api/types/types.proto"; import "google/api/annotations.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; import "tagger/tagger.proto"; option go_package = "github.com/zhufuyi/sponge/api/serverNameExample/v1;v1"; // Default settings for generating *.swagger.json documents // NOTE: because json does not support 64 bits, the int64 and uint64 types under *.swagger.json are automatically converted to string types // Reference https://github.com/grpc-ecosystem/grpc-gateway/blob/db7fbefff7c04877cdb32e16d4a248a024428207/examples/internal/proto/examplepb/a_bit_of_everything.proto option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { host: "localhost:8080" base_path: "" info: { title: "serverNameExample api docs"; version: "2.0"; } schemes: HTTP; schemes: HTTPS; consumes: "application/json"; produces: "application/json"; security_definitions: { security: { key: "BearerAuth"; value: { type: TYPE_API_KEY; in: IN_HEADER; name: "Authorization"; description: "Input a \"Bearer your-jwt-token\" to Value"; } } } }; service userExampleService { rpc Create(CreateUserExampleRequest) returns (CreateUserExampleReply) { option (google.api.http) = { post: "/api/v1/userExample" body: "*" }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "create userExample", description: "submit information to create userExample", tags: "userExample", }; } rpc DeleteByID(DeleteUserExampleByIDRequest) returns (DeleteUserExampleByIDReply) { option (google.api.http) = { delete: "/api/v1/userExample/{id}" }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "delete userExample", description: "delete userExample by id", tags: "userExample", //security: { // security_requirement: { // key: "BearerAuth"; // value: {} // } //} }; } rpc DeleteByIDs(DeleteUserExampleByIDsRequest) returns (DeleteUserExampleByIDsReply) { option (google.api.http) = { post: "/api/v1/userExample/delete/ids" body: "*" }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "delete userExamples", description: "delete userExamples by batch id", tags: "userExample", //security: { // security_requirement: { // key: "BearerAuth"; // value: {} // } //} }; } rpc UpdateByID(UpdateUserExampleByIDRequest) returns (UpdateUserExampleByIDReply) { option (google.api.http) = { put: "/api/v1/userExample/{id}" body: "*" }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "update userExample", description: "update userExample by id", tags: "userExample", //security: { // security_requirement: { // key: "BearerAuth"; // value: {} // } //} }; } rpc GetByID(GetUserExampleByIDRequest) returns (GetUserExampleByIDReply) { option (google.api.http) = { get: "/api/v1/userExample/{id}" }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "get userExample detail", description: "get userExample detail by id", tags: "userExample", //security: { // security_requirement: { // key: "BearerAuth"; // value: {} // } //} }; } rpc ListByIDs(ListUserExampleByIDsRequest) returns (ListUserExampleByIDsReply) { option (google.api.http) = { post: "/api/v1/userExample/list/ids" body: "*" }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "list of userExamples by batch id", description: "list of userExamples by by batch id", tags: "userExample", //security: { // security_requirement: { // key: "BearerAuth"; // value: {} // } //} }; } rpc List(ListUserExampleRequest) returns (ListUserExampleReply) { option (google.api.http) = { post: "/api/v1/userExample/list" body: "*" }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "list of userExamples by query parameters", description: "list of userExamples by paging and conditions", tags: "userExample", //security: { // security_requirement: { // key: "BearerAuth"; // value: {} // } //} }; } } enum GenderType { UNKNOWN = 0; MALE = 1; FEMALE = 2; }; // todo fill in the validate rules https://github.com/envoyproxy/protoc-gen-validate#constraint-rules message CreateUserExampleRequest { string name = 1 [(validate.rules).string.min_len = 2]; // name string email = 2 [(validate.rules).string.email = true]; // email string password = 3 [(validate.rules).string.min_len = 10]; // password string phone = 4 [(validate.rules).string = {pattern: "^1[3456789]\\d{9}$"}]; // phone number string avatar = 5 [(validate.rules).string.uri = true]; // avatar int32 age = 6 [(validate.rules).int32 = {gte:0, lte: 120}]; // age GenderType gender = 7 [(validate.rules).enum.defined_only = true]; // gender, 1:Male, 2:Female, other values:unknown } message CreateUserExampleReply { uint64 id = 1; } message DeleteUserExampleByIDRequest { uint64 id = 1 [(validate.rules).uint64.gte = 1, (tagger.tags) = "uri:\"id\"" ]; } message DeleteUserExampleByIDReply { } message DeleteUserExampleByIDsRequest { repeated uint64 ids = 1; } message DeleteUserExampleByIDsReply { } message UpdateUserExampleByIDRequest { uint64 id = 1 [(validate.rules).uint64.gte = 1 , (tagger.tags) = "uri:\"id\"" ]; string name = 2; // name string email = 3; // email string password = 4; // password string phone = 5; // phone number string avatar = 6; // avatar int32 age = 7; // age GenderType gender = 8; // gender, 1:Male, 2:Female, other values:unknown int32 status = 9; // account status int64 login_at = 10; // login timestamp } message UpdateUserExampleByIDReply { } message UserExample { uint64 id = 1; string name = 2; // name string email = 3; // email string phone = 4; // phone number string avatar = 5; // avatar int32 age = 6; // age GenderType gender = 7; // gender, 1:Male, 2:Female, other values:unknown int32 status = 8; // account status int64 login_at = 9; // login timestamp int64 created_at = 10; // creation time int64 updated_at = 11; // update time } message GetUserExampleByIDRequest { uint64 id = 1 [(validate.rules).uint64.gte = 1, (tagger.tags) = "uri:\"id\"" ]; } message GetUserExampleByIDReply { UserExample userExample = 1; } message ListUserExampleByIDsRequest { repeated uint64 ids = 1; } message ListUserExampleByIDsReply { repeated UserExample userExamples = 1; } message ListUserExampleRequest { types.Params params = 1 [(validate.rules).message.required = true]; } message ListUserExampleReply { int64 total =1; repeated UserExample userExamples = 2; } // delete the templates code end