> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usesynth.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Project namespaces

# `synth_ai.research.project_namespaces`

Nested project namespaces on `client.research.projects`.

## Classes

### `ResearchProjectsSetupAPI` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L18" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Prepare projects for launch (onboarding + runnable setup).

**Methods:**

#### `get` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L24" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
get(self, project_id: str) -> SmrProjectSetup
```

Return current setup/onboarding state for a project.

#### `prepare` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L28" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
prepare(self, project_id: str) -> SmrProjectSetup
```

Run setup steps required before `runs.check_preflight` succeeds.

#### `start_onboarding` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L32" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
start_onboarding(self, project_id: str) -> dict[str, Any]
```

Start the onboarding workflow for a new project.

#### `complete_onboarding_step` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L36" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
complete_onboarding_step(self, project_id: str) -> dict[str, Any]
```

Mark an onboarding step complete or failed.

**Args:**

* `project_id`: Project identifier.
* `step`: Onboarding step name.
* `status`: Step status (for example `"complete"`).
* `detail`: Optional structured detail payload.

#### `dry_run_onboarding` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L59" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
dry_run_onboarding(self, project_id: str) -> dict[str, Any]
```

Validate onboarding prerequisites without mutating project state.

#### `onboarding_status` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L63" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
onboarding_status(self, project_id: str) -> dict[str, Any]
```

Return onboarding progress and blocking issues.

### `ResearchProjectsWorkspaceAPI` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L68" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Upload and download project workspace inputs and archives.

**Methods:**

#### `get` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L74" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
get(self, project_id: str) -> ProjectWorkspaceProjection
```

Return the current workspace projection for a project.

#### `upload` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L78" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
upload(self, project_id: str, files: Iterable[Mapping[str, object]]) -> WorkspaceUploadResult
```

Upload workspace files from in-memory file descriptors.

**Args:**

* `project_id`: Project identifier.
* `files`: Iterable of file mappings (path, content, metadata).

#### `upload_directory` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L91" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
upload_directory(self, project_id: str, directory: str | PathLike[str]) -> WorkspaceUploadResult
```

Upload an entire local directory into the project workspace.

#### `download` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L99" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
download(self, project_id: str, destination: str) -> dict[str, Any]
```

Download the project workspace archive to a local path.

#### `inputs` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L107" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
inputs(self, project_id: str) -> WorkspaceInputsState
```

Return workspace input state (uploaded files, git linkage).

#### `upload_url` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L111" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
upload_url(self, project_id: str) -> dict[str, Any]
```

Mint a presigned URL for direct workspace archive upload.

#### `confirm_push` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L115" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
confirm_push(self, project_id: str) -> dict[str, Any]
```

Confirm a git push completed and attach the uploaded archive.

**Args:**

* `project_id`: Project identifier.
* `commit_sha`: Git commit SHA for the pushed workspace.
* `archive_key`: Storage key returned from `upload_url`.

### `ResearchProjectsReposAPI` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L136" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Attach external source repositories to a project workspace.

**Methods:**

#### `attach` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L142" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
attach(self, project_id: str, url: str) -> dict[str, Any]
```

Attach a git repository as a workspace input source.

**Args:**

* `project_id`: Project identifier.
* `url`: Repository clone URL.
* `default_branch`: Branch to track when no commit is pinned.
* `commit_sha`: Optional pinned commit SHA.

### `ResearchProjectsGitAPI` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L166" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Project git source connection and metadata.

**Methods:**

#### `get` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L172" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
get(self, project_id: str) -> dict[str, Any]
```

Return git metadata for the project workspace.

#### `connect` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L176" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
connect(self, project_id: str) -> Any
```

Connect or update the project's git code source.

### `ResearchProjectsCodeAPI` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L197" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Download project code archives.

**Methods:**

#### `download` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L203" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
download(self, project_id: str, destination: str) -> dict[str, Any]
```

Download the project code archive to a local path.

### `ResearchProjectsObjectivesAPI` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L212" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Directed effort outcomes and objective status for a project.

**Methods:**

#### `list_directed_effort_outcomes` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L218" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
list_directed_effort_outcomes(self, project_id: str) -> List[dict[str, Any]]
```

List directed effort outcomes (legacy alias for directed objectives).

#### `list` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L232" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
list(self, project_id: str) -> List[dict[str, Any]]
```

List objectives for a project, optionally scoped to a run.

#### `get_status` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L248" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
get_status(self, project_id: str, objective_id: str, **kwargs: Any) -> dict[str, Any]
```

Return status fields for a single objective.

#### `get_progress` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L264" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
get_progress(self, project_id: str, objective_id: str) -> dict[str, Any]
```

Return progress metrics for a single objective.

### `ResearchProjectsMilestonesAPI` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L279" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

Project and run-scoped milestones.

**Methods:**

#### `list` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L285" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
list(self, project_id: str) -> List[dict[str, Any]]
```

List milestones for a project, optionally filtered to a run.

### `ResearchProjectsRunsAPI` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L300" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

List runs belonging to a project.

**Methods:**

#### `list` <sup><a href="https://github.com/synth-laboratories/synth-ai/blob/main/synth_ai/research/project_namespaces.py#L306" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>

```python theme={null}
list(self, project_id: str, **kwargs: Any) -> List[dict[str, Any]]
```

List runs for a project.

**Args:**

* `project_id`: Project identifier.
* `active_only`: When `True`, return only non-terminal runs.
