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