pid = an project name (string) gid = a group name (string) uid = a user name (string) id = An integer uniquely identifying user or group Keywords: users, groups, projects, subgroups, direct, indirect, exp, id Reserved characters: ';' ',' No users, groups, or projects may be named one of the keywords. Names should not use HTTP reserved characters. Users Resource Create user POST /users firstname=brian lastname=vanklaveren email_primary=bvan@slac.stanford.edu work_phone=650-123-4321 institution=SLAC username=bvan // optional projects=SRS,LSST-CAMERA,EXO // optional 201 CREATED id=432 Get user from user ID number GET /users/id/{id} Get users with name like brian GET /users?firstname=brian Get users with name like *ian* GET /users?firstname=*ian* Get users with name johnson GET /users?lastname=johnson Get all user groups (with projects) GET /users/{uid}/groups [ {"project":"SRS", "groups":[ "DatacatAdmin", "PipelineAdmin" ] }, {"project":"EXO", "groups":[ "DatacatAdmin", "PipelineAdmin" ] } ] Get projects a user belongs to GET /users/{uid}/projects [ "SRS", "EXO" ] Get the groups a user belongs to in a given project. GET /users/{uid}/{pid}/groups // Includes the groups the user is directly in and any children GET /users/{uid}/{pid}/groups;direct // Includes only groups the user is directly in GET /users/{uid}/{pid}/groups;indirect // Only groups the user is indirectly in. ["DatacatAdmin", "PipelineAdmin" ] Get a the user list GET /projects/{pid}/userlist Creates a group POST /projects/{pid}/groups Get an project's groups GET /projects/{pid}/groups Create a group in an project POST /projects/{pid}/groups name=DatacatAdmin Get an project's group GET /projects/{pid}/groups/{gid} Get an project's group GET /projects/{pid}/groups/{gid} Get all users in an project's group GET /projects/{pid}/groups/{gid}/users Add a user to a group POST /projects/{pid}/groups/{gid}/users name=jim Check if user is in group GET /projects/{pid}/groups/{gid}/users/{uid} // User in this group directly or indirectly GET /projects/{pid}/groups/{gid}/users/{uid};direct // Directly in this group GET /projects/{pid}/groups/{gid}/users/{uid};indirect // Indirectly in this group Add a group to a group (must already exist) POST /projects/{pid}/groups/{gid}/subgroups name=DatacatAdmin Get children of group GET /projects/{pid}/groups/{gid}/subgroups // All, includes children's children GET /projects/{pid}/groups/{gid}/subgroups;direct // Direct Children GET /projects/{pid}/groups/{gid}/subgroups;indirect // Only children's children ["DatacatAdmin", "PipelineAdmin"] Check if group is in group GET /projects/{pid}/groups/{gid}/subgroups/{gid} // Group in this group directly or indirectly GET /projects/{pid}/groups/{gid}/subgroups/{gid};direct // Group is directly in this group GET /projects/{pid}/groups/{gid}/subgroups/{gid};indirect // Group is indirectly in this group NOTE: /projects/{pid} may be omitted if x-srs-project header set in request.