diff --git a/openapi/api_definition.swagger.yaml b/openapi/api_definition.swagger.yaml index 23498f4..1592f16 100644 --- a/openapi/api_definition.swagger.yaml +++ b/openapi/api_definition.swagger.yaml @@ -7,6 +7,7 @@ tags: - name: TokenService - name: SignUpService - name: TagsService + - name: MeService consumes: - application/json produces: @@ -145,6 +146,53 @@ paths: type: string tags: - TagsService + /v1/users/@me: + get: + operationId: MeService_GetMe + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/resourcesAccount' + "422": + description: Validation Error + schema: {} + examples: + application/json: + detail: + - loc: + - string + - 0 + msg: string + type: string + tags: + - MeService + put: + operationId: MeService_PutMe + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/resourcesAccount' + "422": + description: Validation Error + schema: {} + examples: + application/json: + detail: + - loc: + - string + - 0 + msg: string + type: string + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/rpcAccountPatcher' + tags: + - MeService definitions: resourcesAccount: type: object @@ -190,6 +238,22 @@ definitions: type: string expired_at: type: string + rpcAccountPatcher: + type: object + example: + display_name: string + github_id: string + profile: string + twitter_id: string + properties: + display_name: + type: string + profile: + type: string + twitter_id: + type: string + github_id: + type: string rpcGetTagsResponse: type: object properties: diff --git a/proto/schema/users/me/me.proto b/proto/schema/users/me/me.proto new file mode 100644 index 0000000..a6e70bc --- /dev/null +++ b/proto/schema/users/me/me.proto @@ -0,0 +1,28 @@ +syntax = "proto3"; + +package proto.schema.users.me; + +import "proto/schema/users/me/resources/me.proto"; +import "proto/schema/users/me/rpc/me.proto"; + +import "proto/third_party/google/api/empty.proto"; +import "proto/third_party/google/api/annotations.proto"; + +option go_package = "./"; + +service MeService { + rpc GetMe(google.protobuf.Empty) + returns (proto.schema.users.me.resources.Account) { + option (google.api.http) = { + get : "/v1/users/@me" + }; + }; + + rpc PutMe(proto.schema.users.me.rpc.AccountPatcher) + returns (proto.schema.users.me.resources.Account) { + option (google.api.http) = { + put : "/v1/users/@me" + body : "*" + }; + }; +} \ No newline at end of file diff --git a/proto/schema/users/me/rpc/me.proto b/proto/schema/users/me/rpc/me.proto new file mode 100644 index 0000000..cd53ecb --- /dev/null +++ b/proto/schema/users/me/rpc/me.proto @@ -0,0 +1,23 @@ +syntax = "proto3"; + +package proto.schema.users.me.rpc; + +import "proto/third_party/grpc/openapiv2/options/annotations.proto"; + +option go_package = "./"; + +message AccountPatcher { + string display_name = 1; + string profile = 2; + string twitter_id = 3; + string github_id = 4; + + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = { + example : "{" + "\"display_name\": \"string\"," + "\"profile\": \"string\"," + "\"twitter_id\": \"string\"," + "\"github_id\": \"string\"" + "}" + }; +} \ No newline at end of file diff --git a/proto/third_party/google/api/empty.proto b/proto/third_party/google/api/empty.proto new file mode 100644 index 0000000..2211524 --- /dev/null +++ b/proto/third_party/google/api/empty.proto @@ -0,0 +1,51 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option go_package = "google.golang.org/protobuf/types/known/emptypb"; +option java_package = "com.google.protobuf"; +option java_outer_classname = "EmptyProto"; +option java_multiple_files = true; +option objc_class_prefix = "GPB"; +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option cc_enable_arenas = true; + +// A generic empty message that you can re-use to avoid defining duplicated +// empty messages in your APIs. A typical example is to use it as the request +// or the response type of an API method. For instance: +// +// service Foo { +// rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); +// } +// +message Empty {} \ No newline at end of file