github.com/resonatecoop/user-api@v1.0.0-13.0.20220915120639-05dc9c04014a/proto/user/user.proto (about) 1 syntax="proto3"; 2 3 //package example; 4 //package resonate.api.user; 5 package user; 6 7 //option go_package = "user"; 8 9 import "google/api/annotations.proto"; 10 import "protoc-gen-openapiv2/options/annotations.proto"; 11 import "user/common.proto"; 12 import "user/user_messages.proto"; 13 import "user/usergroup_messages.proto"; 14 15 // Defines the import path that should be used to import the generated package, 16 // and the package name. 17 option go_package = "github.com/resonatecoop/user-api/proto/user"; 18 19 // These annotations are used when generating the OpenAPI file. 20 option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { 21 info: { 22 version: "2.0.2"; 23 title: "Resonate Service Documentation: User"; 24 }; 25 external_docs: { 26 url: "https://github.com/resonatecoop/user-api"; 27 description: "gRPC-gateway resonate-user-api repository"; 28 } 29 security_definitions: { 30 security: { 31 key: "bearer" 32 value: { 33 type: TYPE_API_KEY 34 in: IN_HEADER 35 name: "Authorization" 36 description: "Authentication token, prefixed by Bearer: Bearer <token>" 37 } 38 } 39 } 40 security: { 41 security_requirement: { 42 key: "bearer" 43 } 44 } 45 schemes: HTTPS; 46 }; 47 48 service ResonateUser { 49 50 // Users 51 52 //GetUser provides a public level of information about a user 53 rpc GetUser(UserRequest) returns (UserPublicResponse) { 54 option (google.api.http) = { 55 // Route to this method from GET requests to /api/v1/user/{id} 56 get: "/api/v1/user/{id}" 57 }; 58 option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { 59 summary: "Get a user" 60 description: "Get a user's public information from the server." 61 tags: "Users" 62 }; 63 } 64 65 //rpc AddUser(UserAddRequest) returns (User) { 66 rpc AddUser(UserAddRequest) returns (UserRequest) { 67 option (google.api.http) = { 68 // Route to this method from POST requests to /api/v1/users 69 post: "/api/v1/users" 70 body: "*" 71 }; 72 option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { 73 summary: "Add a user" 74 description: "Add a user to the server." 75 tags: "Users" 76 }; 77 } 78 79 //rpc UpdateUser(UserUpdateRequest) returns (Empty) { 80 rpc UpdateUser(UserUpdateRequest) returns (Empty) { 81 option (google.api.http) = { 82 // Route to this method from PUT requests to /api/v1/user 83 patch: "/api/v1/user/{id}" 84 body: "*" 85 }; 86 option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { 87 summary: "Update a user" 88 description: "Update an existing user record on the server." 89 tags: "Users" 90 }; 91 } 92 93 //rpc UpdateUserRestricted(UserUpdateRestrictedRequest) returns (Empty) { 94 rpc UpdateUserRestricted(UserUpdateRestrictedRequest) returns (Empty) { 95 option (google.api.http) = { 96 // Route to this method from PUT requests to /api/v1/user 97 patch: "/api/v1/restricted/user/{id}" 98 body: "*" 99 }; 100 option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { 101 summary: "Update a user record for admins" 102 description: "Update an existing user record on the server including restricted information." 103 tags: "Users" 104 }; 105 } 106 107 // //rpc ResetUserPassword(AddUserRequest) returns (Empty) { 108 // rpc ResetUserPassword(ResetUserPasswordRequest) returns (Empty) { 109 // option (google.api.http) = { 110 // // Route to this method from PUT requests to /api/v1/account 111 // put: "/api/v1/account/password" 112 // body: "*" 113 // }; 114 // option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { 115 // summary: "Update a user's password" 116 // description: "Update an existing user's password on the server." 117 // tags: "Users Password" 118 // }; 119 // } 120 121 //GetUserRestricted provides private level of information about a user 122 rpc GetUserRestricted(UserRequest) returns (UserPrivateResponse) { 123 option (google.api.http) = { 124 // Route to this method from GET requests to /api/v1/restricted/user/{id} 125 get: "/api/v1/restricted/user/{id}" 126 }; 127 option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { 128 summary: "Get a user's restricted information" 129 description: "Get user profile from the server including private information." 130 tags: "Users" 131 }; 132 } 133 134 rpc GetUserMembership(UserRequest) returns (UserMembershipResponse) { 135 option (google.api.http) = { 136 get: "/api/v1/user/{id}/membership" 137 }; 138 option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { 139 summary: "Get user membership" 140 description: "Get user membership." 141 tags: "Membership" 142 }; 143 } 144 145 rpc GetUserCredits(UserRequest) returns (UserCreditResponse) { 146 option (google.api.http) = { 147 get: "/api/v1/user/{id}/credits" 148 }; 149 option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { 150 summary: "Get user credits" 151 description: "Get user credits." 152 tags: "Users" 153 }; 154 } 155 156 rpc DeleteUser(UserRequest) returns (Empty) { 157 option (google.api.http) = { 158 // Route to this method from DELETE requests to /api/v1/restricted/user/{id} 159 delete: "/api/v1/restricted/user/{id}" 160 }; 161 option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { 162 summary: "Delete user" 163 description: "Delete a user from the server." 164 tags: "Users" 165 }; 166 } 167 168 //ListUsers returns a list of all Users 169 rpc ListUsers(Empty) returns (UserListResponse) { 170 option (google.api.http) = { 171 // Route to this method from GET requests to /api/v1/users 172 get: "/api/v1/users" 173 }; 174 option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { 175 summary: "List users" 176 description: "List all users on the server." 177 tags: "Users" 178 }; 179 } 180 181 // UserGroups 182 183 //AddUserGroup adds a UserGroup based on provided attributes 184 rpc AddUserGroup(UserGroupCreateRequest) returns (UserRequest) { 185 option (google.api.http) = { 186 // Route to this method from POST requests to /api/v1/users/{id}/usergroup 187 post: "/api/v1/users/{id}/usergroup" 188 body: "*" 189 }; 190 option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { 191 summary: "Add a user group" 192 description: "Add a user group to the server to user resource with id: id." 193 tags: "Usergroups" 194 }; 195 } 196 197 //UpdateUserGroup updates an existing UserGroup 198 rpc UpdateUserGroup(UserGroupUpdateRequest) returns (Empty) { 199 option (google.api.http) = { 200 // Route to this method from PUT requests to /api/v1/user 201 patch: "/api/v1/usergroup/{id}" 202 body: "*" 203 }; 204 option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { 205 summary: "Update a user group" 206 description: "Update an existing user group record on the server." 207 tags: "Usergroups" 208 }; 209 } 210 211 //rpc UpdateUserRestricted(UpdateUserRestrictedRequest) returns (Empty) { 212 // rpc UpdateUserRestricted(UpdateUserRestrictedRequest) returns (Empty) { 213 // option (google.api.http) = { 214 // // Route to this method from PUT requests to /api/v1/user 215 // patch: "/api/v1/restricted/user/{id}" 216 // body: "*" 217 // }; 218 // option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { 219 // summary: "Update a user record for admins" 220 // description: "Update an existing user record on the server including restricted information." 221 // tags: "Users" 222 // }; 223 // } 224 225 //rpc ResetUserPassword(AddUserRequest) returns (Empty) { 226 // rpc ResetUserPassword(ResetUserPasswordRequest) returns (Empty) { 227 // option (google.api.http) = { 228 // // Route to this method from PUT requests to /api/v1/account 229 // put: "/api/v1/account/password" 230 // body: "*" 231 // }; 232 // option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { 233 // summary: "Update a user's password" 234 // description: "Update an existing user's password on the server." 235 // tags: "Users Password" 236 // }; 237 // } 238 239 //GetUserGroup provides a public level of information about a user group 240 rpc GetUserGroup(UserGroupRequest) returns (UserGroupPublicResponse) { 241 option (google.api.http) = { 242 // Route to this method from GET requests to /api/v1/usergroup/{id} 243 get: "/api/v1/usergroup/{id}" 244 }; 245 option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { 246 summary: "Get a user group" 247 description: "Get a usergroup from the server." 248 tags: "Usergroups" 249 }; 250 } 251 252 //GetUserRestricted provides private level of information about a user 253 // rpc GetUserRestricted(UserRequest) returns (UserPrivateResponse) { 254 // option (google.api.http) = { 255 // // Route to this method from GET requests to /api/v1/restricted/user/{id} 256 // get: "/api/v1/restricted/user/{id}" 257 // }; 258 // option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { 259 // summary: "Get a user's restricted information" 260 // description: "Get user profile from the server including private information." 261 // tags: "Users" 262 // }; 263 // } 264 265 //DeleteUserGroup deletes a UserGroup 266 rpc DeleteUserGroup(UserGroupRequest) returns (Empty) { 267 option (google.api.http) = { 268 // Route to this method from DELETE requests to /api/v1/restricted/user/{id} 269 delete: "/api/v1/usergroup/{id}" 270 }; 271 option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { 272 summary: "Delete usergroup" 273 description: "Delete a usergroup from the server." 274 tags: "Usergroups" 275 }; 276 } 277 278 rpc ListUsersUserGroups(UserRequest) returns (UserGroupListResponse) { 279 option (google.api.http) = { 280 // Route to this method from GET requests to /api/v1/users/{id}/usergroups 281 get: "/api/v1/users/{id}/usergroups" 282 }; 283 option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { 284 summary: "Get a list of users groups" 285 description: "Get a list of users groups owned by user from server" 286 tags: "Usergroups" 287 }; 288 } 289 290 // rpc CreateUserGroup(UserGroupCreateRequest) returns (UserGroupPrivateResponse); 291 // rpc GetUserGroup(UserGroupRequest) returns (UserGroupPublicResponse); 292 // // rpc GetUserGroupRestricted(UserGroupRequest) returns (UserGroupPrivateResponse); 293 // rpc UpdateUserGroup(UserGroupUpdateRequest) returns (UserGroupPrivateResponse); 294 // rpc DeleteUserGroup(UserGroupRequest) returns (Empty); 295 296 // rpc GetChildUserGroups(UserGroupRequest) returns (GroupedUserGroups); 297 // rpc GetParentUserGroups(UserGroupRequest) returns (GroupedUserGroups); 298 299 // rpc GetLabelUserGroups(UserGroupRequest) returns (GroupedUserGroups); 300 // rpc GetUserGroupTypes(Empty) returns (GroupTaxonomies); 301 302 // //rpc AddRecommended(UserGroupRecommended) returns (Empty); 303 // //rpc RemoveRecommended(UserGroupRecommended) returns (Empty); 304 305 // rpc AddMember(UserGroupMembershipRequest) returns (Empty); 306 // rpc DeleteMember(UserGroupMembershipRequest) returns (Empty); 307 308 // rpc SearchUserGroups(Query) returns (SearchResults); 309 } 310 311 312 313