Clustron API (1.0.0)

Download OpenAPI specification:

Group

Groups_getGroups

Get all groups of the user.

query Parameters
page
integer <int32>
size
integer <int32> [ 1 .. 100 ]
sort
string
Enum: "asc" "desc"
sortBy
string

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "totalPages": 10,
  • "totalItems": 100,
  • "currentPage": 1,
  • "pageSize": 10,
  • "hasNextPage": true
}

Groups_createGroup

Create a new group. Only admin level can reach this endpoint.

Request Body schema: application/json
required
title
required
string
description
required
string
Array of objects (Groups.AddMemberRequest)
Array of objects (Groups.CreateLinkRequest)

Responses

Request samples

Content type
application/json
{
  • "title": "Distributed Systems Project",
  • "description": "Group for the distributed systems course project.",
  • "members": [
    ],
  • "links": []
}

Response samples

Content type
application/json
{
  • "addedResult": {
    },
  • "id": "123e4567-e89b-12d3-a456-426614174100",
  • "title": "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": {
    }
}

Groups_getGroupById

Get a group by id.

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "links": [],
  • "id": "123e4567-e89b-12d3-a456-426614174100",
  • "title": "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": {
    }
}

Groups_archiveGroup

Archive a group. Will reject the request from access level 'user', 'group-admin'.

path Parameters
id
required
string

Responses

Groups_getMembers

Get all members of a group. Will reject the request from access level 'user'.

path Parameters
id
required
string
query Parameters
page
integer <int32>
size
integer <int32> [ 1 .. 100 ]
sort
string
Enum: "asc" "desc"
sortBy
string

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "totalPages": 10,
  • "totalItems": 100,
  • "currentPage": 1,
  • "pageSize": 10,
  • "hasNextPage": true
}

Groups_addMember

Add a member to a group. Will reject the request from access level 'user'.

path Parameters
id
required
string
Request Body schema: application/json
required
required
Array of objects (Groups.AddMemberRequest)

Responses

Request samples

Content type
application/json
{
  • "members": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174001",
  • "fullName": "Alice Chen",
  • "email": "alice@university.edu",
  • "studentId": "R12345678",
  • "role": {
    },
  • "onlyInLDAP": false,
  • "uidNumber": 10000,
  • "uid": "123"
}

Groups_removeMember

Remove a member from a group. Will reject the request from access level 'user'

path Parameters
id
required
string
memberId
required
string

Responses

Groups_updateMember

Update a member's access level. Will reject the request from access level 'user'

path Parameters
id
required
string
memberId
required
string
Request Body schema: application/json
required
roleId
required
string <uuid>

The role id of the member.

Responses

Request samples

Content type
application/json
{
  • "roleId": "123e4567-e89b-12d3-a456-426614174000"
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174001",
  • "fullName": "Alice Chen",
  • "email": "alice@university.edu",
  • "studentId": "R12345678",
  • "role": {
    },
  • "onlyInLDAP": false,
  • "uidNumber": 10000,
  • "uid": "123"
}

Groups_getPendingMembers

Get all pending members of a group. Will reject the request from access level 'user'.

path Parameters
id
required
string
query Parameters
page
integer <int32>
size
integer <int32> [ 1 .. 100 ]
sort
string
Enum: "asc" "desc"
sortBy
string

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "totalPages": 10,
  • "totalItems": 100,
  • "currentPage": 1,
  • "pageSize": 10,
  • "hasNextPage": true
}

Groups_updatePendingMember

Update a pending member's access level. Will reject the request from access level 'user'

path Parameters
id
required
string
pendingId
required
string
Request Body schema: application/json
required
roleId
required
string <uuid>

The role id of the member.

Responses

Request samples

Content type
application/json
{
  • "roleId": "123e4567-e89b-12d3-a456-426614174000"
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174002",
  • "userIdentifier": "applicant@example.edu",
  • "role": {
    }
}

Groups_removePendingMember

Remove a pending member from a group. Will reject the request from access level 'user'

path Parameters
id
required
string
pendingId
required
string

Responses

Groups_transferGroupOwnership

Transfer group ownership to another member. Will reject the request from access level 'user'

path Parameters
id
required
string
Request Body schema: application/json
required
identifier
required
string

The new owner id in UUID format.

Responses

Request samples

Content type
application/json
{
  • "identifier": "123e4567-e89b-12d3-a456-426614174200"
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174100",
  • "title": "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": {
    }
}

Groups_unarchiveGroup

Unarchive a group. Will reject the request from access level 'user', 'group-admin'.

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174100",
  • "title": "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": {
    }
}

User

User_onboardUser

Request Body schema: application/json
required
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.

Responses

Request samples

Content type
application/json
{
  • "fullName": "Alice Chen",
  • "linuxUsername": "alice",
  • "linuxPassword": "StrongP@ssw0rd!"
}

User_changePassword

Change the password of the user.

Request Body schema: application/json
required
newPassword
required
string

The new password of the user. At least 8 characters. Include alphabet and number.

Responses

Request samples

Content type
application/json
{
  • "newPassword": "string"
}

User_getPublicKey

query Parameters
short
boolean

Get 10 head characters of publickey as short public key in 'publickey' field.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

User_addPublicKey

Request Body schema: application/json
required
title
required
string

The public key title set by the user.

publicKey
required
string

The public key of the user.

Responses

Request samples

Content type
application/json
{
  • "title": "workstation-key",
  • "publicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3..."
}

Response samples

Content type
application/json
{
  • "fingerprint": "GP79vI7mQGl6eKR1b/6qfzzRwkGEUlZ2RA/mX8tVtXc",
  • "title": "workstation-key",
  • "publicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3..."
}

User_deletePublicKey

Request Body schema: application/json
required
fingerprint
required
string

The public key fingerprint.

Responses

Request samples

Content type
application/json
{
  • "fingerprint": "GP79vI7mQGl6eKR1b/6qfzzRwkGEUlZ2RA/mX8tVtXc"
}

User_importPublicKey

query Parameters
c
string

The redirect URL after login completed.

Responses

Response samples

Content type
application/json

User_getUserSettings

Responses

Response samples

Content type
application/json
{
  • "fullName": "Alice Chen",
  • "linuxUsername": "alice",
  • "boundLoginMethods": [
    ]
}

User_updateSettings

Request Body schema: application/json
required
fullName
required
string

The real name of the user.

linuxUsername
required
string

The computer account name of the user.

Responses

Request samples

Content type
application/json
{
  • "fullName": "Alice Chen",
  • "linuxUsername": "alice"
}

Response samples

Content type
application/json
{
  • "fullName": "Alice Chen",
  • "linuxUsername": "alice"
}

Auth

Auth_bindOAuth

path Parameters
provider
required
string (Auth.OAuthProviders)
Enum: "google" "nycu"

The OAuth2 provider to bind.

query Parameters
c
required
string

The callback URL of the OAuth2 login. See details

r
string

The redirect URL for login callback.

Responses

Response samples

Content type
application/json
{
  • "url": "/api/bind/oauth/google?http://localhost:8080/callback/bind"
}

Auth_loginGoogle

path Parameters
provider
required
string (Auth.OAuthProviders)
Enum: "google" "nycu"

The OAuth2 provider to use for login.

query Parameters
c
required
string

The callback URL of the OAuth2 login. See details

r
string

The redirect URL for login callback.

Responses

Auth_logout

Responses

Auth_refreshToken

path Parameters
refreshToken
required
string

The refresh token to use for refreshing the access token.

Responses

Response samples

Content type
application/json
{
  • "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  • "expirationTime": 1700000000,
  • "refreshToken": "rftk_1234567890abcdef"
}

Admin

Admin_getAllGlobalRoles

get all avaliable global roles

Responses

Response samples

Content type
application/json
[
  • "ADMIN"
]

Admin_getRoleAccessLevelMapping

get all mapping between group wise role and group wise access level

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Admin_postRoleAccessLevelMapping

post new mapping between group wise role and group wise access level

Request Body schema: application/json
required
role
required
string

The name of the role.

accessLevel
required
string
Enum: "GROUP_OWNER" "GROUP_ADMIN" "USER"

The access level of the role.

Responses

Request samples

Content type
application/json
{
  • "role": "project-member",
  • "accessLevel": "USER"
}

Response samples

Content type
application/json
[
  • {
    }
]

Admin_deleteRoleAccessLevelMapping

delete mapping between group wise role and group wise access level

path Parameters
id
required
string <uuid> (uuid)

Responses

Admin_putRoleAccessLevelMapping

update mapping between group wise role and group wise access level

path Parameters
id
required
string <uuid> (uuid)
Request Body schema: application/json
required
role
required
string

The name of the role.

accessLevel
required
string
Enum: "GROUP_OWNER" "GROUP_ADMIN" "USER"

The access level of the role.

Responses

Request samples

Content type
application/json
{
  • "role": "project-member",
  • "accessLevel": "USER"
}

Response samples

Content type
application/json
[
  • {
    }
]

Admin_getAllUsers

get all users

query Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "totalPages": 10,
  • "totalItems": 100,
  • "currentPage": 1,
  • "pageSize": 10,
  • "hasNextPage": true
}

Admin_updateUserRole

update a user's global role

path Parameters
id
required
string <uuid> (uuid)
Request Body schema: application/json
required
role
required
string
Enum: "ADMIN" "ORGANIZER" "USER"

The new role of the user.

Responses

Request samples

Content type
application/json
{
  • "role": "ORGANIZER"
}

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "fullName": "Alice Chen",
  • "email": "alice@university.edu",
  • "studentId": "R12345678",
  • "role": "USER"
}

Job

Job_submitJob

Request Body schema: application/json
required
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

Responses

Request samples

Content type
application/json
{
  • "name": "test-job",
  • "comment": "My test job for experiments",
  • "current_working_directory": "/home/<user>",
  • "script": "#!/bin/bash\nhostname\necho a\n",
  • "environment": [
    ],
  • "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"
}

Response samples

Content type
application/json
{
  • "id": 12345,
  • "name": "test-job",
  • "comment": "My test job for experiments",
  • "status": "RUNNING",
  • "user": "alice",
  • "partition": "short",
  • "resources": {
    }
}

Job_listJobs

query Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "totalPages": 10,
  • "totalItems": 100,
  • "currentPage": 1,
  • "pageSize": 10,
  • "hasNextPage": true
}

Job_countJobs

Count jobs by status.

query Parameters
status
string
Enum: "RUNNING" "PENDING" "COMPLETED" "FAILED" "TIMEOUT" "CANCELLED"

The status of jobs to count. If not provided, counts all statuses.

Responses

Response samples

Content type
application/json
{
  • "running": 0,
  • "pending": 0,
  • "completed": 0,
  • "failed": 0,
  • "timeout": 0,
  • "cancelled": 0
}

Job_getPartitions

Get available partitions.

Responses

Response samples

Content type
application/json
{
  • "partitions": [
    ]
}

Search

Search_searchUser

Search for users by a query string with prefix search.

query Parameters
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

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "totalPages": 10,
  • "totalItems": 100,
  • "currentPage": 1,
  • "pageSize": 10,
  • "hasNextPage": true
}

Module

Module_listModules

list the user's module

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Module_createModule

create module

Request Body schema: application/json
required
title
required
string
required
Array of objects

the environment variables for the module

Responses

Request samples

Content type
application/json
{
  • "title": "CUDA 11.8",
  • "environment": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "mod-123456",
  • "title": "CUDA 11.8",
  • "environment": [
    ]
}

Module_getModule

get a module by id

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "mod-123456",
  • "title": "CUDA 11.8",
  • "environment": [
    ]
}

Module_updateModule

update module by id

path Parameters
id
required
string
Request Body schema: application/json
required
title
required
string
required
Array of objects

the environment variables for the module

Responses

Request samples

Content type
application/json
{
  • "title": "CUDA 11.8",
  • "environment": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "mod-123456",
  • "title": "CUDA 11.8",
  • "environment": [
    ]
}

Module_deleteModule

delete module by id

path Parameters
id
required
string

Responses

Setup

Setup_getSetupStatus

Get the current setup status of the system. If any of the status is false, the system setup is not complete.

Responses

Response samples

Content type
application/json
{
  • "progress": {
    }
}