Skip to main content

Overview

The ProjectResource provides methods for managing Speckle projects. Access it via client.project after authenticating your SpeckleClient. Projects are the top-level containers in Speckle that hold models, versions, and team members.

Methods

get()

Get a single project by ID.
Parameters:
str
required
The ID of the project to retrieve
Returns:
Project
The project object
Example:
See Project for property details.

get_permissions()

Get permission checks for a project.
Parameters:
str
required
The ID of the project
Returns:
ProjectPermissionChecks
Permission check results
Example:
See PermissionCheckResult for property details.

get_with_models()

Get a project with its models included.
Parameters:
str
required
The ID of the project
int
default:"25"
Maximum number of models to return
str
default:"None"
Cursor for pagination
ProjectModelsFilter
default:"None"
Filter criteria for models. See ProjectModelsFilter
Returns:
ProjectWithModels
Project with models collection
Example:
See ProjectModelsFilter for filtering options.

get_with_team()

Get a project with its team members and pending invitations.
Parameters:
str
required
The ID of the project
Returns:
ProjectWithTeam
Project with team information
Example:

create()

Create a new personal project (non-workspace).
Parameters:
ProjectCreateInput
required
Project creation parameters. See ProjectCreateInput
Returns:
Project
The newly created project
Example:
See ProjectCreateInput for all available fields.
Check if you can create personal projects using client.active_user.can_create_personal_projects() before calling this method.

create_in_workspace()

Create a new workspace project.
Parameters:
WorkspaceProjectCreateInput
required
Workspace project creation parameters. See WorkspaceProjectCreateInput
Returns:
Project
The newly created workspace project
Example:
See WorkspaceProjectCreateInput for all available fields.
This method only works on workspace-enabled servers (e.g., app.speckle.systems). Check workspace permissions using workspace.permissions.canCreateProject before calling.

update()

Update an existing project.
Parameters:
ProjectUpdateInput
required
Project update parameters. See ProjectUpdateInput
Returns:
Project
The updated project
Example:
See ProjectUpdateInput for all available fields.

delete()

Delete a project permanently.
Parameters:
str
required
The ID of the project to delete
Returns:
bool
True if deletion was successful
Example:
This operation is irreversible! All models, versions, and data in the project will be permanently deleted.

update_role()

Update a team member’s role in the project.
Parameters:
ProjectUpdateRoleInput
required
Role update parameters
Returns:
ProjectWithTeam
Updated project with team information
Example:
ProjectUpdateRoleInput Fields:
  • projectId (str, required) - The project ID
  • userId (str, required) - The user ID whose role to update
  • role (str, required) - New role: "stream:owner", "stream:contributor", or "stream:reviewer"
Role Permissions:
  • stream:owner - Full control, can delete project and manage team
  • stream:contributor - Can create models and versions
  • stream:reviewer - Read-only access

Types

Project

Represents a Speckle project.
str
Project ID
str
Project name
str
Project description
str
"PUBLIC", "PRIVATE", or "UNLISTED"
str
Your role: "stream:owner", "stream:contributor", or "stream:reviewer"
datetime
Creation timestamp
datetime
Last update timestamp
bool
Whether public comments are allowed
List[str]
List of source applications used
str
Workspace ID if this is a workspace project

PermissionCheckResult

Result of a permission check operation.
bool
Whether the action is authorized
str
Permission code
str
Human-readable message

Input Types

ProjectCreateInput

Used with create(). Fields:
  • name (str) - Project name
  • description (str, optional) - Project description
  • visibility (str, optional) - "PRIVATE", "PUBLIC", or "UNLISTED"

ProjectUpdateInput

Used with update(). Fields:
  • id (str) - Project ID
  • name (str, optional) - New project name
  • description (str, optional) - New description
  • allow_public_comments (bool, optional) - Allow public comments
  • visibility (str, optional) - New visibility setting

WorkspaceProjectCreateInput

Used with create_in_workspace(). Fields:
  • name (str) - Project name
  • description (str, optional) - Project description
  • visibility (str, optional) - "PRIVATE", "PUBLIC", or "UNLISTED"
  • workspaceId (str) - Workspace ID

Filters

ProjectModelsFilter

Used with get_with_models() and client.model.get_models(). Fields:
  • contributors (List[str], optional) - Filter by contributor user IDs
  • exclude_ids (List[str], optional) - Exclude specific model IDs
  • ids (List[str], optional) - Include only specific model IDs
  • only_with_versions (bool, optional) - Only return models with versions
  • search (str, optional) - Search by model name
  • source_apps (List[str], optional) - Filter by source application

ModelResource

Work with models in projects

VersionResource

Manage versions in models

ActiveUserResource

Get user’s projects and permissions

SpeckleClient

Main client documentation