Wallaroo MLOps API Essentials Guide: Workspace Management
Workspace Naming Requirements
Workspace names map onto Kubernetes objects, and must be DNS compliant. Workspace names must be ASCII alpha-numeric characters or dash (-) only. .
and _
are not allowed.
Workspaces
List Workspaces
List the workspaces for a specific user.
- Parameters
- user_id - (OPTIONAL string): The Keycloak ID.
Example: In this example, the workspaces for all users will be displayed.
# List workspaces
# Retrieve the token
headers = wl.auth.auth_header()
api_request = f"{APIURL}/v1/api/workspaces/list"
data = {
}
response = requests.post(api_request, json=data, headers=headers, verify=True).json()
response
{'workspaces': [{'id': 1,
'name': 'john.hummel@wallaroo.ai - Default Workspace',
'created_at': '2023-05-17T20:36:36.312003+00:00',
'created_by': '028c8b48-c39b-4578-9110-0b5bdd3824da',
'archived': False,
'models': [],
'pipelines': []},
{'id': 5,
'name': 'housepricedrift',
'created_at': '2023-05-17T20:41:50.351766+00:00',
'created_by': '028c8b48-c39b-4578-9110-0b5bdd3824da',
'archived': False,
'models': [1],
'pipelines': [1]},
{'id': 6,
'name': 'sdkquickworkspace',
'created_at': '2023-05-17T20:43:36.727099+00:00',
'created_by': '028c8b48-c39b-4578-9110-0b5bdd3824da',
'archived': False,
'models': [2, 3],
'pipelines': [3]}]}
Create Workspace
A new workspace will be created in the Wallaroo instance. Upon creating, the workspace owner will be assigned as the user making the MLOps API request.
- Parameters:
- workspace_name - (REQUIRED string): The name of the new workspace with the following requirements:
- Must be unique.
- DNS compliant with only lowercase characters.
- workspace_name - (REQUIRED string): The name of the new workspace with the following requirements:
- Returns:
- workspace_id - (int): The ID of the new workspace.
Example: In this example, a workspace with the name testapiworkspace
will be created, and the newly created workspace’s workspace_id
saved as the variable example_workspace_id
for use in other code examples. After the request is complete, the List Workspaces command will be issued to demonstrate the new workspace has been created.
# Create workspace
# Retrieve the token
headers = wl.auth.auth_header()
api_request = f"{APIURL}/v1/api/workspaces/create"
data = {
"workspace_name": example_workspace_name
}
response = requests.post(api_request, json=data, headers=headers, verify=True).json()
display(response)
# Stored for future examples
example_workspace_id = response['workspace_id']
{'workspace_id': 7}
## List workspaces
# Retrieve the token
headers = wl.auth.auth_header()
api_request = f"{APIURL}/v1/api/workspaces/list"
data = {
}
response = requests.post(api_request, json=data, headers=headers, verify=True).json()
response
{'workspaces': [{'id': 1,
'name': 'john.hummel@wallaroo.ai - Default Workspace',
'created_at': '2023-05-17T20:36:36.312003+00:00',
'created_by': '028c8b48-c39b-4578-9110-0b5bdd3824da',
'archived': False,
'models': [],
'pipelines': []},
{'id': 5,
'name': 'housepricedrift',
'created_at': '2023-05-17T20:41:50.351766+00:00',
'created_by': '028c8b48-c39b-4578-9110-0b5bdd3824da',
'archived': False,
'models': [1],
'pipelines': [1]},
{'id': 6,
'name': 'sdkquickworkspace',
'created_at': '2023-05-17T20:43:36.727099+00:00',
'created_by': '028c8b48-c39b-4578-9110-0b5bdd3824da',
'archived': False,
'models': [2, 3],
'pipelines': [3]},
{'id': 7,
'name': 'apiworkspaces',
'created_at': '2023-05-17T20:50:36.298217+00:00',
'created_by': '028c8b48-c39b-4578-9110-0b5bdd3824da',
'archived': False,
'models': [],
'pipelines': []}]}
Add User to Workspace
Existing users of the Wallaroo instance can be added to an existing workspace.
- Parameters
- email - (REQUIRED string): The email address of the user to add to the workspace. This user must already exist in the Wallaroo instance.
- workspace_id - (REQUIRED int): The id of the workspace.
Example: The following example adds the user created in Invite Users request to the workspace created in the Create Workspace request.
# Add existing user to existing workspace
# Retrieve the token
headers = wl.auth.auth_header()
api_request = f"{APIURL}/v1/api/workspaces/add_user"
data = {
"email":new_user,
"workspace_id": example_workspace_id
}
response = requests.post(api_request, json=data, headers=headers, verify=True).json()
response
{}
List Users in a Workspace
Lists the users who are either owners or collaborators of a workspace.
- Parameters
- workspace_id - (REQUIRED int): The id of the workspace.
- Returns
- user_id: The user’s Keycloak identification.
- user_type: The user’s workspace type (owner, co-owner, etc).
Example: The following example will list all users part of the workspace created in the Create Workspace request.
# List users in a workspace
# Retrieve the token
headers = wl.auth.auth_header()
api_request = f"{APIURL}/v1/api/workspaces/list_users"
data = {
"workspace_id": example_workspace_id
}
response = requests.post(api_request, json=data, headers=headers, verify=True).json()
response
{'users': [{'user_id': '028c8b48-c39b-4578-9110-0b5bdd3824da',
'user_type': 'OWNER'},
{'user_id': 'c64d26bc-5d30-4d0d-9ae9-9c0089bc4b80',
'user_type': 'COLLABORATOR'}]}
Remove User from a Workspace
Removes the user from the given workspace. In this request, either the user’s Keycloak ID is required OR the user’s email address is required.
- Parameters
- workspace_id - (REQUIRED int): The id of the workspace.
- user_id - (string): The Keycloak ID of the user. If
email
is not provided, then this parameter is REQUIRED. - email - (string): The user’s email address. If
user_id
is not provided, then this parameter is REQUIRED.
- Returns
- user_id: The user’s identification.
- user_type: The user’s workspace type (owner, co-owner, etc).
Example: The following example will remove the newUser
from workspace created in the Create Workspace request. Then the users for that workspace will be listed to verify newUser
has been removed.
# Remove existing user from an existing workspace
# Retrieve the token
headers = wl.auth.auth_header()
api_request = f"{APIURL}/v1/api/workspaces/remove_user"
data = {
"email":new_user,
"workspace_id": example_workspace_id
}
response = requests.post(api_request, json=data, headers=headers, verify=True).json()
response
{'affected_rows': 1}
## List users in a workspace
# Retrieve the token
headers = wl.auth.auth_header()
api_request = f"{APIURL}/v1/api/users/query"
data = {
"workspace_id": example_workspace_id
}
response = requests.post(api_request, json=data, headers=headers, verify=True).json()
response
{'users': {'de777519-2963-423a-92d2-e6e26d687527': {'access': {'mapRoles': True,
'view': True,
'manageGroupMembership': True,
'impersonate': False,
'manage': True},
'createdTimestamp': 1684355337295,
'disableableCredentialTypes': [],
'emailVerified': False,
'enabled': True,
'id': 'de777519-2963-423a-92d2-e6e26d687527',
'notBefore': 0,
'requiredActions': [],
'username': 'admin'},
'c64d26bc-5d30-4d0d-9ae9-9c0089bc4b80': {'access': {'manage': True,
'mapRoles': True,
'manageGroupMembership': True,
'impersonate': False,
'view': True},
'createdTimestamp': 1684356685177,
'disableableCredentialTypes': [],
'email': 'john.hansarick@wallaroo.ai',
'emailVerified': True,
'enabled': True,
'firstName': 'John',
'id': 'c64d26bc-5d30-4d0d-9ae9-9c0089bc4b80',
'lastName': 'Hansarick',
'notBefore': 0,
'requiredActions': [],
'username': 'john.hansarick@wallaroo.ai'},
'028c8b48-c39b-4578-9110-0b5bdd3824da': {'access': {'mapRoles': True,
'view': True,
'impersonate': False,
'manage': True,
'manageGroupMembership': True},
'createdTimestamp': 1684355671859,
'disableableCredentialTypes': [],
'email': 'john.hummel@wallaroo.ai',
'emailVerified': False,
'enabled': True,
'firstName': 'John',
'id': '028c8b48-c39b-4578-9110-0b5bdd3824da',
'lastName': 'Hansarick',
'notBefore': 0,
'requiredActions': [],
'username': 'john.hummel@wallaroo.ai'}}}