Python example
Use the Python examples to manage repositories and workspaces with the Unity Version Control client REST API.
Read time 4 minutesLast updated 15 days ago
Overview
These Python examples demonstrate how to interact with the Unity Version Control CM REST API using the
library. You can use this code as a foundation for building Unity Version Control integrations into your Python scripts,
automation tools, or applications.
requestsThe examples cover both repository and workspace management operations:
The examples cover the following repository operations:
- List repositories: View all available repositories on your Unity Version Control server.
- Create repositories: Add new repositories with custom names and server configurations.
- Rename repositories: Update existing repository names.
- Delete repositories: Remove repositories from your server.
The examples cover the following workspace operations:
- List workspaces: Display all workspaces configured on your system.
- Create workspaces: Set up new workspaces linked to specific repositories.
- Delete workspaces: Remove workspace configurations.
Each example is self-contained and demonstrates proper error handling, user input collection, and API response
processing patterns you can apply in your own Unity Version Control integrations.
List repositories
import sysimport requests# Base URL for the Unity Version Control CM API__api_url = "http://localhost:9090/api/v1"def print_repositories(repositories): """Display repository information in a readable format""" line = "{0} {1} {2}" for repo in repositories: print(line.format(repo["repId"]["id"], repo["name"], repo["server"]))def get_repositories(): """Retrieve all repositories from the Unity Version Control server""" url = __api_url + "/repos" req = requests.get(url) if req.status_code is 200: return req.json() # Handle API errors gracefully print("The repository list could not be retrieved.", file=sys.stderr) exit(-1)def main(): try: print_repositories(get_repositories()) except requests.RequestException as e: print(e) exit(-1)if __name__ == "__main__": main()
Create repository
import sysimport requests# Base URL for the Unity Version Control CM API__api_url = "http://localhost:9090/api/v1"def create_repository(name, server): """Send repository creation request to the Unity Version Control server""" url = __api_url + "/repos" params = {"name": name, "server": server} req = requests.post(url, params) if req.status_code is not 200: print("The repository could not be created", file=sys.stderr) exit(-1)def main(): # Collect repository details from user input name = input("Write a name for the new repository: ") server = input("Enter the PlasticSCM server address: ") try: create_repository(name, server) except requests.RequestException as e: print(e) exit(-1)if __name__ == "__main__": main()
Rename repository
import sysimport requests# Base URL for the Unity Version Control CM API__api_url = "http://localhost:9090/api/v1"def print_repositories(repositories): """Display repository information in a readable format""" line = "{0} {1} {2}" for repo in repositories: print(line.format(repo["repId"]["id"], repo["name"], repo["server"]))def get_repositories(): """Retrieve all repositories from the Unity Version Control server""" url = __api_url + "/repos" req = requests.get(url) if req.status_code is 200: return req.json() print("The repository list could not be retrieved.", file=sys.stderr) exit(-1)def rename_repo(old_name, new_name): """Update the name of an existing repository""" url = __api_url + "/repos/" + old_name params = {"name": new_name} req = requests.put(url, params) if req.status_code is not 200: print("The repository could not be created.", file=sys.stderr) exit(-1)def main(): try: # Show available repositories for user selection print_repositories(get_repositories()) # Collect rename parameters from user old_name = input("\nWrite the name of the repository to rename: ") new_name = input("Write a new name for the repository " + old_name + ": ") # Execute rename operation and display updated repository list rename_repo(old_name, new_name) print_repositories(get_repositories()) except requests.RequestException as e: print(e, file=sys.stderr) exit(-1)if __name__ == "__main__": main()
Delete repository
import sysimport requests# Base URL for the Unity Version Control CM API__api_url = "http://localhost:9090/api/v1"def print_repositories(repositories): """Display repository information in a readable format""" line = "{0} {1} {2}" for repo in repositories: print(line.format(repo["repId"]["id"], repo["name"], repo["server"]))def get_repositories(): """Retrieve all repositories from the Unity Version Control server""" url = __api_url + "/repos" req = requests.get(url) if req.status_code is 200: return req.json() print("The repository list could not be retrieved.", file=sys.stderr) exit(-1)def remove_repo(name): """Delete a repository by name from the Unity Version Control server""" url = __api_url + "/repos/" + name req = requests.delete(url) # Delete operations return 204 No Content on success if req.status_code is not 204: print("The repository could not be deleted", file=sys.stderr) exit(-1)def main(): try: # Show available repositories for user selection print_repositories(get_repositories()) repo = input("Write the name of the repository to delete: ") # Execute deletion and display updated repository list remove_repo(repo) print_repositories(get_repositories()) except requests.RequestException as e: print(e, file=sys.stderr) exit(-1)if __name__ == "__main__": main()
List workspaces
import sysimport requests# Base URL for the Unity Version Control CM API__api_url = "http://localhost:9090/api/v1"def print_workspaces(wkspaces): """Display workspace information in a readable format""" line = "Name: {0}, path: {1}" for wkspace in wkspaces: print(line.format(wkspace["name"], wkspace["path"]))def get_workspaces(): """Retrieve all workspaces configured on the system""" url = __api_url + "/wkspaces" req = requests.get(url) if req.status_code is 200: return req.json() print("Workspace list could not be retrieved.", file=sys.stderr) exit(-1)def main(): try: print_workspaces(get_workspaces()) except requests.RequestException as e: print(e, file=sys.stderr) exit(-1)if __name__ == "__main__": main()
Create workspace
import sysimport requests# Base URL for the Unity Version Control CM API__api_url = "http://localhost:9090/api/v1"def print_repositories(repositories): """Display repository information in a readable format""" line = "{0} {1} {2}" for repo in repositories: print(line.format(repo["repId"]["id"], repo["name"], repo["server"]))def get_repositories(): """Retrieve all repositories from the Unity Version Control server""" url = __api_url + "/repos" req = requests.get(url) if req.status_code is 200: return req.json() print("The repository list could not be retrieved.", file=sys.stderr) exit(-1)def create_workspace(name, path, repository): """Create a new workspace linked to the specified repository""" url = __api_url + "/wkspaces" params = {"name": name, "path": path, "repository": repository} req = requests.post(url, params) if req.status_code is not 200: print("The workspace could not be created.", file=sys.stderr) exit(-1)def main(): try: # Show available repositories for workspace creation print_repositories(get_repositories()) # Collect workspace configuration details from user repository = input("Write the name of a repository to create a new workspace to: ") name = input("Write the name for the new workspace: ") path = input("Write the path for the new workspace: ") create_workspace(name, path, repository) except requests.RequestException as e: print(e, file=sys.stderr) exit(-1)if __name__ == "__main__": main()
Delete workspace
import sysimport requests# Base URL for the Unity Version Control CM API__api_url = "http://localhost:9090/api/v1"def print_workspaces(wkspaces): """Display workspace information in a readable format""" line = "Name: {0}, path: {1}" for wkspace in wkspaces: print(line.format(wkspace["name"], wkspace["path"]))def get_workspaces(): """Retrieve all workspaces configured on the system""" url = __api_url + "/wkspaces" req = requests.get(url) if req.status_code is 200: return req.json() print("Workspace list could not be retrieved.", file=sys.stderr) exit(-1)def remove_workspace(name): """Delete a workspace configuration by name""" url = __api_url + "/wkspaces/" + name req = requests.delete(url) # Delete operations return 204 No Content on success if req.status_code is not 204: print("The workspace could not be deleted.", file=sys.stderr) sys.exit(-1)def main(): try: # Show available workspaces for user selection print_workspaces(get_workspaces()) name = input("Write the name of the workspace to delete: ") remove_workspace(name) except requests.RequestException as e: print(e, file=sys.stderr) exit(-1)if __name__ == "__main__": main()