syntax = "proto3"; package memos.api.v2; import "api/v2/common.proto"; import "google/api/annotations.proto"; import "google/api/client.proto"; import "google/api/field_behavior.proto"; import "google/protobuf/timestamp.proto"; option go_package = "gen/api/v2"; service UserService { rpc GetUser(GetUserRequest) returns (GetUserResponse) { option (google.api.http) = {get: "/api/v2/users/{username}"}; option (google.api.method_signature) = "username"; } rpc UpdateUser(UpdateUserRequest) returns (UpdateUserResponse) { option (google.api.http) = { post: "/api/v2/users/{username}" body: "*" }; option (google.api.method_signature) = "username"; } // ListUserAccessTokens returns a list of access tokens for a user. rpc ListUserAccessTokens(ListUserAccessTokensRequest) returns (ListUserAccessTokensResponse) { option (google.api.http) = {get: "/api/v2/users/{username}/access_tokens"}; option (google.api.method_signature) = "username"; } // CreateUserAccessToken creates a new access token for a user. rpc CreateUserAccessToken(CreateUserAccessTokenRequest) returns (CreateUserAccessTokenResponse) { option (google.api.http) = { post: "/api/v2/users/{username}/access_tokens" body: "user_access_token" }; option (google.api.method_signature) = "username"; } // DeleteUserAccessToken deletes an access token for a user. rpc DeleteUserAccessToken(DeleteUserAccessTokenRequest) returns (DeleteUserAccessTokenResponse) { option (google.api.http) = {delete: "/api/v2/users/{username}/access_tokens/{access_token}"}; option (google.api.method_signature) = "username,access_token"; } } message User { int32 id = 1; string username = 2; enum Role { ROLE_UNSPECIFIED = 0; HOST = 1; ADMIN = 2; USER = 3; } Role role = 3; string email = 4; string nickname = 5; string open_id = 6; string avatar_url = 7; string password = 8 [(google.api.field_behavior) = INPUT_ONLY]; RowStatus row_status = 9; google.protobuf.Timestamp create_time = 10; google.protobuf.Timestamp update_time = 11; } message GetUserRequest { string username = 1; } message GetUserResponse { User user = 1; } message UpdateUserRequest { string username = 1; User user = 2; // The update mask applies to the user resource. repeated string update_mask = 3; } message UpdateUserResponse { User user = 1; } message ListUserAccessTokensRequest { string username = 1; } message ListUserAccessTokensResponse { repeated UserAccessToken access_tokens = 1; } message CreateUserAccessTokenRequest { string username = 1; UserAccessToken user_access_token = 2; } message CreateUserAccessTokenResponse { UserAccessToken access_token = 1; } message DeleteUserAccessTokenRequest { string username = 1; // access_token is the access token to delete. string access_token = 2; } message DeleteUserAccessTokenResponse {} message UserAccessToken { string access_token = 1; string description = 2; google.protobuf.Timestamp issued_at = 3; google.protobuf.Timestamp expires_at = 4; }