Download OpenAPI specification:
Get all groups of the user.
| page | integer <int32> |
| size | integer <int32> [ 1 .. 100 ] |
| sort | string Enum: "asc" "desc" |
| sortBy | string |
{- "items": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174100",
- "title": "GPU Research Group",
- "ldapGroupName": "GPU-research-group",
- "description": "Group for GPU research and experiments.",
- "isArchived": false,
- "createdAt": "2024-01-01T12:00:00Z",
- "updatedAt": "2024-10-01T12:00:00Z",
- "me": {
- "type": "membership",
- "role": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "roleName": "Member",
- "accessLevel": "USER"
}
}
}
], - "totalPages": 10,
- "totalItems": 100,
- "currentPage": 1,
- "pageSize": 10,
- "hasNextPage": true
}Create a new group. Only admin level can reach this endpoint.
| title required | string |
| description required | string |
| ldapGroupName required | string |
Array of objects (Groups.AddMemberRequest) | |
Array of objects (Groups.CreateLinkRequest) |
{- "title": "Distributed Systems Project",
- "description": "Group for the distributed systems course project.",
- "ldapGroupName": "DS-prj",
- "members": [
- {
- "member": "alice@university.edu",
- "roleId": "123e4567-e89b-12d3-a456-426614174000"
}
],
}{- "addedResult": {
- "addedSuccessNumber": 2,
- "addedFailureNumber": 0,
- "errors": [ ]
}, - "id": "123e4567-e89b-12d3-a456-426614174100",
- "title": "GPU Research Group",
- "ldapGroupName": "GPU-research-group",
- "description": "Group for GPU research and experiments.",
- "isArchived": false,
- "createdAt": "2024-01-01T12:00:00Z",
- "updatedAt": "2024-10-01T12:00:00Z",
- "me": {
- "type": "membership",
- "role": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "roleName": "Member",
- "accessLevel": "USER"
}
}
}{- "links": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174010",
- "title": "Lab Resources",
}
], - "id": "123e4567-e89b-12d3-a456-426614174100",
- "title": "GPU Research Group",
- "ldapGroupName": "GPU-research-group",
- "description": "Group for GPU research and experiments.",
- "isArchived": false,
- "createdAt": "2024-01-01T12:00:00Z",
- "updatedAt": "2024-10-01T12:00:00Z",
- "me": {
- "type": "membership",
- "role": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "roleName": "Member",
- "accessLevel": "USER"
}
}
}Create a link for a group. Will reject the request from access level 'user'.
| id required | string |
| title required | string The title of the link. |
| url required | string The URL of the link. |
{- "title": "Lab Resources",
}{- "id": "123e4567-e89b-12d3-a456-426614174010",
- "title": "Lab Resources",
}Update a link for a group. Will reject the request from access level 'user'.
| id required | string |
| linkId required | string |
| title required | string The title of the link. |
| url required | string The URL of the link. |
{- "title": "Updated Lab Resources",
}{- "id": "123e4567-e89b-12d3-a456-426614174010",
- "title": "Lab Resources",
}Get all members of a group. Will reject the request from access level 'user'.
| id required | string |
| page | integer <int32> |
| size | integer <int32> [ 1 .. 100 ] |
| sort | string Enum: "asc" "desc" |
| sortBy | string |
{- "items": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174001",
- "fullName": "Alice Chen",
- "email": "alice@university.edu",
- "studentId": "R12345678",
- "role": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "roleName": "Member",
- "accessLevel": "USER"
}, - "onlyInLDAP": false,
- "uidNumber": 10000,
- "uid": "123"
}
], - "totalPages": 10,
- "totalItems": 100,
- "currentPage": 1,
- "pageSize": 10,
- "hasNextPage": true
}Add a member to a group. Will reject the request from access level 'user'.
| id required | string |
required | Array of objects (Groups.AddMemberRequest) |
{- "members": [
- {
- "member": "bob@university.edu",
- "roleId": "123e4567-e89b-12d3-a456-426614174000"
}
]
}{- "addedSuccessNumber": 3,
- "addedFailureNumber": 1,
- "errors": [
- {
- "member": "bob@university.edu",
- "role": "123e4567-e89b-12d3-a456-426614174000",
- "message": "User not found"
}
]
}Update a member's access level. Will reject the request from access level 'user'
| id required | string |
| memberId required | string |
| roleId required | string <uuid> The role id of the member. |
{- "roleId": "123e4567-e89b-12d3-a456-426614174000"
}{- "id": "123e4567-e89b-12d3-a456-426614174001",
- "fullName": "Alice Chen",
- "email": "alice@university.edu",
- "studentId": "R12345678",
- "role": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "roleName": "Member",
- "accessLevel": "USER"
}, - "onlyInLDAP": false,
- "uidNumber": 10000,
- "uid": "123"
}Get all pending members of a group. Will reject the request from access level 'user'.
| id required | string |
| page | integer <int32> |
| size | integer <int32> [ 1 .. 100 ] |
| sort | string Enum: "asc" "desc" |
| sortBy | string |
{- "items": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174002",
- "userIdentifier": "applicant@example.edu",
- "role": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "roleName": "Member",
- "accessLevel": "USER"
}
}
], - "totalPages": 10,
- "totalItems": 100,
- "currentPage": 1,
- "pageSize": 10,
- "hasNextPage": true
}Update a pending member's access level. Will reject the request from access level 'user'
| id required | string |
| pendingId required | string |
| roleId required | string <uuid> The role id of the member. |
{- "roleId": "123e4567-e89b-12d3-a456-426614174000"
}{- "id": "123e4567-e89b-12d3-a456-426614174002",
- "userIdentifier": "applicant@example.edu",
- "role": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "roleName": "Member",
- "accessLevel": "USER"
}
}Transfer group ownership to another member. Will only accept the request from access level 'owner'.
| id required | string |
| identifier required | string The new owner id in UUID format. |
{- "identifier": "123e4567-e89b-12d3-a456-426614174200"
}{- "id": "123e4567-e89b-12d3-a456-426614174100",
- "title": "GPU Research Group",
- "ldapGroupName": "GPU-research-group",
- "description": "Group for GPU research and experiments.",
- "isArchived": false,
- "createdAt": "2024-01-01T12:00:00Z",
- "updatedAt": "2024-10-01T12:00:00Z",
- "me": {
- "type": "membership",
- "role": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "roleName": "Member",
- "accessLevel": "USER"
}
}
}Unarchive a group. Will reject the request from access level 'user', 'group-admin'.
| id required | string |
{- "id": "123e4567-e89b-12d3-a456-426614174100",
- "title": "GPU Research Group",
- "ldapGroupName": "GPU-research-group",
- "description": "Group for GPU research and experiments.",
- "isArchived": false,
- "createdAt": "2024-01-01T12:00:00Z",
- "updatedAt": "2024-10-01T12:00:00Z",
- "me": {
- "type": "membership",
- "role": {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "roleName": "Member",
- "accessLevel": "USER"
}
}
}| fullName required | string The real name of the user. |
| linuxUsername required | string The computer account name of the user. |
| linuxPassword required | string The password for the computer account. At least 8 digits, including alphabet and number. |
{- "fullName": "Alice Chen",
- "linuxUsername": "alice",
- "linuxPassword": "StrongP@ssw0rd!"
}| length | integer Get a specific number of characters from the public key as a short public key in the 'publickey' field. Default to 20 if not specified. |
[- {
- "fingerprint": "GP79vI7mQGl6eKR1b/6qfzzRwkGEUlZ2RA/mX8tVtXc",
- "title": "workstation-key",
- "publicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3..."
}
]| title required | string The public key title set by the user. |
| publicKey required | string The public key of the user. |
{- "title": "workstation-key",
- "publicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3..."
}{- "fingerprint": "GP79vI7mQGl6eKR1b/6qfzzRwkGEUlZ2RA/mX8tVtXc",
- "title": "workstation-key",
- "publicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3..."
}| provider required | string (Auth.OAuthProviders) Enum: "google" "nycu" The OAuth2 provider to bind. |
| c required | string The callback URL of the OAuth2 login. See details |
| r | string The redirect URL for login callback. |
{- "redirectURL": "/api/bind/oauth/google?http://localhost:8080/callback/bind"
}| provider required | string (Auth.OAuthProviders) Enum: "google" "nycu" The OAuth2 provider to use for login. |
| c required | string The callback URL of the OAuth2 login. See details |
| r | string The redirect URL for login callback. |
| refreshToken required | string The refresh token to use for refreshing the access token. |
{- "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
- "expirationTime": 1700000000,
- "refreshToken": "rftk_1234567890abcdef"
}post new mapping between group wise role and group wise access level
| role required | string The name of the role. |
| accessLevel required | string Enum: "GROUP_OWNER" "GROUP_ADMIN" "USER" "UNKNOWN" The access level of the role. |
{- "role": "project-member",
- "accessLevel": "USER"
}[- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "roleName": "Member",
- "accessLevel": "USER"
}
]update mapping between group wise role and group wise access level
| id required | string <uuid> (uuid) |
| role required | string The name of the role. |
| accessLevel required | string Enum: "GROUP_OWNER" "GROUP_ADMIN" "USER" "UNKNOWN" The access level of the role. |
{- "role": "project-member",
- "accessLevel": "USER"
}[- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "roleName": "Member",
- "accessLevel": "USER"
}
]get all users
| page | integer <int32> |
| size | integer <int32> [ 1 .. 100 ] |
| sort | string Enum: "asc" "desc" |
| sortBy | string Enum: "fullName" "email" "studentID" |
| search | string Search term to filter users by name, email or student ID. |
| role | string (Admin.Role) Enum: "ADMIN" "ORGANIZER" "USER" Filter users by their global role. |
{- "items": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "fullName": "Alice Chen",
- "linuxUsername": "alice",
- "email": "alice@university.edu",
- "studentId": "R12345678",
- "role": "USER"
}
], - "totalPages": 10,
- "totalItems": 100,
- "currentPage": 1,
- "pageSize": 10,
- "hasNextPage": true
}update a user's global role
| id required | string <uuid> (uuid) |
| role required | string Enum: "ADMIN" "ORGANIZER" "USER" The new role of the user. |
{- "role": "ORGANIZER"
}{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "fullName": "Alice Chen",
- "linuxUsername": "alice",
- "email": "alice@university.edu",
- "studentId": "R12345678",
- "role": "USER"
}Bind a user to certain linux user in ldap via their linux username. This linux user must exist in ldap before binding. This endpoint is not responsible for maintaining relations other than the ldap binding. It might require manual setup in database for all permission to work correctly.
| id required | string <uuid> (uuid) |
| linuxUsername required | string The linux username to bind in LDAP. This linux user must exist in LDAP before binding. |
{- "linuxUsername": "alice"
}{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "fullName": "Alice Chen",
- "linuxUsername": "alice",
- "email": "alice@university.edu",
- "studentId": "R12345678",
- "role": "USER"
}| name required | string |
| comment | string |
| current_working_directory required | string |
| script required | string |
| environment required | Array of strings |
| nodes | string |
| minimum_nodes | number |
| maximum_nodes | number |
| tasks required | number |
| cpus_per_task required | number |
| memory_per_cpu required | number |
| memory_per_node required | number |
| partition required | string |
| time_limit required | number |
| standard_input | string |
| standard_output | string |
| standard_error | string |
{- "name": "test-job",
- "comment": "My test job for experiments",
- "current_working_directory": "/home/<user>",
- "script": "#!/bin/bash\nhostname\necho a\n",
- "environment": [
- "HOME=/home/<user>",
- "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/bin",
- "SHELL=/bin/bash"
], - "nodes": "node[1-2]",
- "minimum_nodes": 1,
- "maximum_nodes": 2,
- "tasks": 4,
- "cpus_per_task": 2,
- "memory_per_cpu": 4096,
- "memory_per_node": 8192,
- "partition": "debug",
- "time_limit": 3600,
- "standard_input": "/dev/null",
- "standard_output": "job.out",
- "standard_error": "job.err"
}{- "id": 12345,
- "name": "test-job",
- "comment": "My test job for experiments",
- "status": "RUNNING",
- "user": "alice",
- "partition": "short",
- "resources": {
- "cpu": 8,
- "memory": 32768,
- "gpu": 0
}
}| page | integer <int32> |
| size | integer <int32> [ 1 .. 100 ] |
| sort | string Enum: "asc" "desc" |
| sortBy | string |
| filterBy | string The column to filter by. |
| filterValue | string The value to filter by. |
{- "items": [
- {
- "id": 12345,
- "name": "test-job",
- "comment": "My test job for experiments",
- "status": "RUNNING",
- "user": "alice",
- "partition": "short",
- "resources": {
- "cpu": 8,
- "memory": 32768,
- "gpu": 0
}
}
], - "totalPages": 10,
- "totalItems": 100,
- "currentPage": 1,
- "pageSize": 10,
- "hasNextPage": true
}Count jobs by status.
| status | string Enum: "RUNNING" "PENDING" "COMPLETED" "FAILED" "TIMEOUT" "CANCELLED" The status of jobs to count. If not provided, counts all statuses. |
{- "running": 0,
- "pending": 0,
- "completed": 0,
- "failed": 0,
- "timeout": 0,
- "cancelled": 0
}Search for users by a query string with prefix search.
| query required | string The search query string used to match facts and references. |
| page | integer <int32> |
| size | integer <int32> [ 1 .. 100 ] |
| sort | string Enum: "asc" "desc" |
| sortBy | string |
{- "items": [
- {
- "identifier": "R12345678"
}
], - "totalPages": 10,
- "totalItems": 100,
- "currentPage": 1,
- "pageSize": 10,
- "hasNextPage": true
}create module
| title required | string |
required | Array of objects the environment variables for the module |
{- "title": "CUDA 11.8",
- "environment": [
- {
- "key": "PATH",
- "value": "/usr/local/cuda/bin"
}
]
}{- "id": "mod-123456",
- "title": "CUDA 11.8",
- "environment": [
- {
- "key": "PATH",
- "value": "/usr/local/cuda/bin"
}
]
}update module by id
| id required | string |
| title required | string |
required | Array of objects the environment variables for the module |
{- "title": "CUDA 11.8",
- "environment": [
- {
- "key": "PATH",
- "value": "/usr/local/cuda/bin"
}
]
}{- "id": "mod-123456",
- "title": "CUDA 11.8",
- "environment": [
- {
- "key": "PATH",
- "value": "/usr/local/cuda/bin"
}
]
}