syntax = "proto3"; package slash.api.v1; import "google/api/annotations.proto"; import "google/api/client.proto"; import "google/protobuf/field_mask.proto"; option go_package = "gen/api/v1"; service UserSettingService { // GetUserSetting returns the user setting. rpc GetUserSetting(GetUserSettingRequest) returns (GetUserSettingResponse) { option (google.api.http) = {get: "/api/v1/users/{id}/settings"}; option (google.api.method_signature) = "id"; } // UpdateUserSetting updates the user setting. rpc UpdateUserSetting(UpdateUserSettingRequest) returns (UpdateUserSettingResponse) { option (google.api.http) = { patch: "/api/v1/users/{id}/settings" body: "user_setting" }; option (google.api.method_signature) = "user_setting,update_mask"; } } message UserSetting { int32 user_id = 1; GeneralSetting general = 2; AccessTokensSetting access_tokens = 3; message GeneralSetting { string locale = 1; string color_theme = 2; } message AccessTokensSetting { message AccessToken { // The access token is a JWT token, including expiration time, issuer, etc. string access_token = 1; // A description for the access token. string description = 2; } repeated AccessToken access_tokens = 1; // Nested repeated field } } message GetUserSettingRequest { // id is the user id. int32 id = 1; } message GetUserSettingResponse { UserSetting user_setting = 1; } message UpdateUserSettingRequest { // id is the user id. int32 id = 1; // user_setting is the user setting to update. UserSetting user_setting = 2; // update_mask is the field mask to update. google.protobuf.FieldMask update_mask = 3; } message UpdateUserSettingResponse { UserSetting user_setting = 1; }