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

# Orm.project

## Project Objects

```python theme={"dark"}
class Project(base_orm.BaseORM)
```

DEPRECATED - prefer using the `encord.project.Project` class instead.

A project defines a label ontology and is a collection of datasets and label rows.

ORM:

* title,
* description,
* editor\_ontology,
* ontology\_hash,
* datasets::

```
    [
       {
            dataset_hash (uid),
            title,
            description,
            dataset_type (internal vs. AWS/GCP/Azure),
       },
       ...
    ],
```

* label\_rows::

```
    [
        {
            label_hash (uid),
            data_hash (uid),
            dataset_hash (uid),
            dataset_title,
            data_title,
            data_type,
            label_status
        },
        ...
    ]
```

* annotation\_task\_status

#### get\_labels\_list

```python theme={"dark"}
def get_labels_list() -> List[Optional[str]]
```

Returns a list of all optional label row IDs (label\_hash uid) in a project. If no `label_hash` is found,
a `None` value is appended. This can be useful for working with fetching additional label row data via
[get\_label\_rows()](/sdk-documentation/sdk-references/project#get_label_rows) for example.

```

        project = client_instance.get_project(<project_hash>)
        project_orm = project.get_project()

        labels_list = project_orm.get_labels_list()
        created_labels_list = []
        for label in labels_list:
            if label is not None:  # None values will fail the operation
                created_labels_list.append(label)

        label_rows = project.get_label_rows(created_labels_list, get_signed_url=False)
```

#### workflow\_manager\_uuid

```python theme={"dark"}
@property
def workflow_manager_uuid() -> UUID
```

Accessing this property will raise a `WrongProjectTypeError` if the project is not a workflow project.

## ProjectDataset Objects

```python theme={"dark"}
class ProjectDataset(BaseDTO)
```

Minimal information about a dataset attached to a project.

**Arguments**:

* `dataset_hash` - UUID of the dataset attached to the project.
* `title` - Human-readable title of the dataset.
* `description` - Description of the dataset.

## ProjectType Objects

```python theme={"dark"}
class ProjectType(str, Enum)
```

Type of Project.

**Values**:

* **WORKFLOW:** Standard workflow Project with stages such as ANNOTATE and REVIEW.
* **MANUAL\_QA:** Project configured for manual QA only.

## ProjectStatus Objects

```python theme={"dark"}
class ProjectStatus(str, Enum)
```

Lifecycle status of a Project.

**Values**:

* **NOT\_STARTED:** The project has been created but no work has begun.
* **IN\_PROGRESS:** The project is active and annotation/review work is ongoing.
* **IN\_REVIEW:** The project is under review before completion.
* **PAUSED:** The project is temporarily paused.
* **COMPLETED:** All work on the project has been completed.
* **CANCELLED:** The project has been canceled before completion.
* **ARCHIVED:** The project is archived and no further work is expected.
* **UNKNOWN:** An unrecognized status from a newer API version. Please update your SDK.

#### UNKNOWN

This value will be returned if the Encord platform has a new project status that your SDK
version does not recognize yet. Please update your SDK to the latest version.

#### \_missing\_

```python theme={"dark"}
@classmethod
def _missing_(cls, value: Any) -> "ProjectStatus"
```

Return UNKNOWN for any unrecognized project status values.

## ProjectCopyOptions Objects

```python theme={"dark"}
class ProjectCopyOptions(str, Enum)
```

Options controlling what is copied when duplicating a project.

**Values:**

* **COLLABORATORS:** Copy project collaborators to the new project.
* **DATASETS:** Copy or attach datasets to the new project.
* **MODELS:** Copy model configuration and attachments.
* **LABELS:** Copy labels associated with the project.

## ReviewApprovalState Objects

```python theme={"dark"}
class ReviewApprovalState(str, Enum)
```

Approval state of a label in review.

**Values**:

* **APPROVED:** Label has been reviewed and approved.
* **PENDING:** Label is pending review or decision.
* **REJECTED:** Label has been reviewed and rejected.
* **DELETED:** Label has been removed.
* **NOT\_SELECTED\_FOR\_REVIEW:** Label was not selected for review.

## CopyDatasetAction Objects

```python theme={"dark"}
class CopyDatasetAction(str, Enum)
```

Strategy for handling datasets when copying a project.

**Values**:

* **ATTACH:** Attach the existing datasets from the original project to the
  copied project.
* **CLONE:** Clone data units into a new dataset and attach that dataset to
  the copied project.

## CopyDatasetOptions Objects

```python theme={"dark"}
@dataclass
class CopyDatasetOptions()
```

Options for copying the datasets associated with a project.

#### action

One of `CopyDatasetAction.ATTACH` or `CopyDatasetAction.CLONE`. (defaults to ATTACH)

#### datasets\_to\_data\_hashes\_map

A dictionary of `{ <dataset_hash>: List[<data_unit_hash>]}`.
When provided with a CLONE action this will filter the copied data units.
When combined with `CopyLabelsOptions`, only labels from specific data units will be copied.

## CopyLabelsOptions Objects

```python theme={"dark"}
@dataclass
class CopyLabelsOptions()
```

Options for copying the labels associated with a project.

#### accepted\_label\_hashes

A list of label hashes that will be copied to the new project

#### accepted\_label\_statuses

A list of label statuses to filter the labels copied to the new project, defined in `ReviewApprovalState`

## CopyProjectPayload Objects

```python theme={"dark"}
@dataclass
class CopyProjectPayload()
```

WARN: do not use, this is only for internal purpose.

## ProjectWorkflowType Objects

```python theme={"dark"}
class ProjectWorkflowType(Enum)
```

Workflow type for a project.

**Values**:

* **MANUAL\_QA:** Manual QA workflow, where reviews are performed explicitly.
* **BENCHMARK\_QA:** Benchmark QA workflow, where annotators are presented with
  benchmark or honeypot data.

## ManualReviewWorkflowSettings Objects

```python theme={"dark"}
class ManualReviewWorkflowSettings()
```

Sets the project QA workflow to "manual reviews". There are currently no available settings for this workflow

## BenchmarkQaWorkflowSettings Objects

```python theme={"dark"}
@dataclass
class BenchmarkQaWorkflowSettings()
```

Sets the project QA workflow to "Automatic", with benchmark data being presented to all the annotators

#### source\_projects

For Benchmark QA projects, a list of project ids (project\_hash-es)
that contain the benchmark source data

#### ProjectWorkflowSettings

A variant type that allows you to select the type of quality assurance workflow for the project,
and configure it.

Currently one of:
[ManualReviewWorkflowSettings](/sdk-documentation/sdk-references/orm.project#manualreviewworkflowsettings): a workflow with optional manual reviews
[BenchmarkQaWorkflowSettings](/sdk-documentation/sdk-references/orm.project#benchmarkqaworkflowsettings): annotators are presented with "benchmark" or "honeypot" data

## ReviewMode Objects

```python theme={"dark"}
class ReviewMode(str, Enum)
```

**Values**:

* **UNLABELLED:** The labels are added to the images. However, the one person must still go over
  all of the labels before submitting them for review.
* **LABELLED:** The labels are added to the images and are marked as labelled. A reviewer will
  still need to approve those.
* **REVIEWED:** The labels are added to the images and considered reviewed. No more action is
  required from the labeler or reviewer.

## CvatExportType Objects

```python theme={"dark"}
class CvatExportType(str, Enum)
```

Type of CVAT export to generate.

**Values**:

* **PROJECT:** Export annotations at the project level.
* **TASK:** Export annotations at the task level.

## TaskPriorityParams Objects

```python theme={"dark"}
class TaskPriorityParams(BaseDTO)
```

Parameters for updating task priorities in bulk.

**Arguments**:

* `priorities` - List of `(task_hash, priority)` tuples where `task_hash`
  identifies the task and `priority` is a floating-point
  priority value to assign.

## ProjectTag Objects

```python theme={"dark"}
class ProjectTag(BaseDTO)
```

A tag assigned to a project.

**Arguments**:

* `uuid` - Unique identifier of the tag.
* `name` - Human-readable name of the tag.

## AddProjectIssueTagsPayload Objects

```python theme={"dark"}
class AddProjectIssueTagsPayload(BaseDTO)
```

Payload for linking issue tags to a Project by name.

**Arguments**:

* `issue_tag_names` - List of issue tag names to link to a Project.

## ProjectDTO Objects

```python theme={"dark"}
class ProjectDTO(BaseDTO)
```

Data transfer object representing a project.

**Arguments**:

* `project_hash` - UUID of the project.
* `project_type` - Type of the project (workflow, manual QA, etc.).
* `status` - Current lifecycle status of the project.
* `title` - Human-readable title of the project.
* `description` - Description of the project.
* `created_at` - Timestamp when the project was created.
* `last_edited_at` - Timestamp when the project was last modified.
* `ontology_hash` - Identifier of the ontology associated with the project.
* `editor_ontology` - Full ontology definition used by the project editor.
* `user_role` - Role of the current user on this project, if known.
* `source_projects` - Optional list of project identifiers that this project was
  derived from (for example, benchmark sources).
* `workflow_manager_uuid` - UUID of the workflow manager associated with this project,
  if the project uses the workflow system.
* `workflow` - Workflow definition for the project, if available.

## CvatReviewMode Objects

```python theme={"dark"}
class CvatReviewMode(CamelStrEnum)
```

**Values**:

* **UNLABELLED:** The labels are added to the images. However, the one person must still go over
  all the labels before submitting them for review.
* **LABELLED:** The labels are added to the images and are marked as labelled. A reviewer will
  still need to approve those.
* **REVIEWED:** The labels are added to the images and considered reviewed. No more action is
  required from the labeler or reviewer.

## CvatImportDataItem Objects

```python theme={"dark"}
class CvatImportDataItem(BaseDTO)
```

Single data item entry in a CVAT import.

**Arguments**:

* `data_path` - Path to the data item in the original CVAT export.
* `data_link` - URL or storage link to the data item accessible by Encord.
* `title` - Human-readable title to use for the imported data item.

## CvatImportStartPayload Objects

```python theme={"dark"}
class CvatImportStartPayload(BaseDTO)
```

Payload for starting a CVAT import operation.

**Arguments**:

* `annotations_base64` - Base64-encoded CVAT annotations file contents.
* `dataset_uuid` - UUID of the target dataset to import annotations into.
* `review_mode` - Review mode to apply to imported annotations.
* `data` - List of data items to be imported from the CVAT export.
* `transform_bounding_boxes_to_polygons` - If `True`, convert CVAT bounding boxes to polygons on import.

## CvatImportGetResultParams Objects

```python theme={"dark"}
class CvatImportGetResultParams(BaseDTO)
```

Parameters for polling the result of a CVAT import operation.

**Arguments**:

* `timeout_seconds` - Maximum number of seconds to wait for the import to complete
  before returning the current status.

## CvatImportGetResultLongPollingStatus Objects

```python theme={"dark"}
class CvatImportGetResultLongPollingStatus(str, Enum)
```

Status of a long-polling request for a CVAT import operation.

**Values**:

* **DONE:** The import has completed successfully.
* **ERROR:** The import has failed. See the issues field in the response.
* **PENDING:** The import is still in progress.

## CvatImportGetResultResponse Objects

```python theme={"dark"}
class CvatImportGetResultResponse(BaseDTO)
```

Response model for CVAT import operation status.

**Arguments**:

* `status` *CvatImportGetResultLongPollingStatus* - Import status ("DONE", "ERROR", "PENDING")
* `project_uuid` *Optional\[UUID]* - Created project ID. Only present when status="DONE"
* `issues` *Optional\[Dict]* - Import issues. Present for "DONE" (warnings) or "ERROR" (failures)

## ProjectFilterParams Objects

```python theme={"dark"}
class ProjectFilterParams(BaseDTO)
```

Filter parameters for the /v2/public/projects endpoint

## SetProjectStatusPayload Objects

```python theme={"dark"}
class SetProjectStatusPayload(BaseDTO)
```

Payload for updating the status of a project.

**Arguments**:

status:New status to set for the project.

## GetProjectUsersPayload Objects

```python theme={"dark"}
class GetProjectUsersPayload(BaseDTO)
```

Parameters for listing users on a project.

**Arguments**:

* `page_token` - Optional token for fetching the next page of users from a
  previous call.

## ProjectUserResponse Objects

```python theme={"dark"}
class ProjectUserResponse(BaseDTO)
```

This one should be merged with ProjectUser class
But at the moment server doesn't return "project\_hash" field (which is correct I suppose), that ProjectUser expects
TODO: deprecate project\_hash field from ProjectUsers and merge this two together

## ProjectBranchResult Objects

```python theme={"dark"}
class ProjectBranchResult(BaseDTO)
```

A single branch entry returned by the list branches endpoint.

## ListBranchesParams Objects

```python theme={"dark"}
class ListBranchesParams(BaseDTO)
```

Query parameters for the list branches endpoint.

## BulkClassificationsPayload Objects

```python theme={"dark"}
class BulkClassificationsPayload(BaseDTO)
```

Request payload for `POST /projects/{uuid}/label-rows/classifications`.

## ClassificationAnswerObject Objects

```python theme={"dark"}
class ClassificationAnswerObject(BaseDTO)
```

Nested answer within a [ClassificationAnswerEntry](/sdk-documentation/sdk-references/orm.project#classificationanswerentry).

#### answers

list\[AnswersAnswer] | str | float

## ClassificationAnswerEntry Objects

```python theme={"dark"}
class ClassificationAnswerEntry(BaseDTO)
```

Single classification answer returned by the bulk classifications endpoint.

Matches the `ClassificationAnswer` shape produced by the legacy
`initialise_labels` SDK path.

## LabelClassificationsEntry Objects

```python theme={"dark"}
class LabelClassificationsEntry(BaseDTO)
```

One label row's classification data in the bulk response.

## BulkClassificationsResponse Objects

```python theme={"dark"}
class BulkClassificationsResponse(BaseDTO)
```

Response from `POST /projects/{uuid}/label-rows/classifications`.
