> ## 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.

# Workflow.stages.annotation

## AnnotationStage Objects

```python theme={"dark"}
class AnnotationStage(WorkflowStageBase)
```

#### stage\_type

An Annotate stage in a non-Consensus Project.

You can use this stage in Consensus and non-Consensus Projects.

#### get\_tasks

```python theme={"dark"}
def get_tasks(
    *,
    assignee: Union[List[str], str, None] = None,
    data_hash: Union[List[UUID], UUID, List[str], str, None] = None,
    dataset_hash: Union[List[UUID], UUID, List[str], str, None] = None,
    data_title: Optional[str] = None,
    status: Union[AnnotationTaskStatus, List[AnnotationTaskStatus],
                  None] = None
) -> Iterable[AnnotationTask]
```

Retrieves tasks for the AnnotationStage.

**Parameters**

* `assignee` (Union\[List\[str], str, None]): A list of user emails or a single user email to filter tasks by assignee.
* `data_hash` (Union\[List\[UUID], UUID, List\[str], str, None]): A list of data unit UUIDs or a single data unit UUID to filter tasks by data hash.
* `dataset_hash` (Union\[List\[UUID], UUID, List\[str], str, None]): A list of dataset UUIDs or a single dataset UUID to filter tasks by dataset hash.
* `data_title` (Optional\[str]): A string to filter tasks by data title.
* `status` (Optional\[AnnotationTaskStatus | List\[AnnotationTaskStatus]]): A status or a list of statuses to filter tasks by their status.

**Returns**

An iterable of `AnnotationTask` instances from both non-Consensus and Consensus Projects.

## AnnotationTask Objects

```python theme={"dark"}
class AnnotationTask(WorkflowTask)
```

Represents a task in a non-Consensus Annotate stage.

**Attributes**

* `status` (AnnotationTaskStatus): The current status of the task.
* `data_hash` (UUID): Unique ID for the data unit.
* `data_title` (str): Name of the data unit.
* `label_branch_name` (str): Name of the label branch.
* `assignee` (Optional\[str]): User assigned to the task.

**Allowed actions**

* `submit`: Submits a task for review.
* `assign`: Assigns a task to a user.
* `release`: Releases a task from the current user.
* `move`: Moves the task to another stage in the workflow.

#### submit

```python theme={"dark"}
def submit(*,
           assignee: Optional[str] = None,
           retain_assignee: bool = False,
           bundle: Optional[Bundle] = None) -> None
```

Submits the task for review.

**Parameters**

* `assignee` (Optional\[str]): User email to be assigned to the task whilst submitting the task.
* `retain_assignee` (bool): Retains the current assignee of the task. This is ignored if `assignee` is provided. An Error will occur if the task does not already have an assignee and `retain_assignee` is True.
* `bundle` (Optional\[Bundle]): Optional bundle to be included with the submission.

#### assign

```python theme={"dark"}
def assign(assignee: str, *, bundle: Optional[Bundle] = None) -> None
```

Assigns the task to a user.

**Parameters**

* `assignee` (str): The email of the user to assign the task to.
* `bundle` (Optional\[Bundle]): Optional bundle to be included with the assignment.

#### release

```python theme={"dark"}
def release(*, bundle: Optional[Bundle] = None) -> None
```

Releases the task from the current user.

**Parameters**

* `bundle` (Optional\[Bundle]): Optional bundle to be included with the release.

#### move

```python theme={"dark"}
def move(*,
         destination_stage_uuid: UUID,
         bundle: Optional[Bundle] = None) -> None
```

Moves the task from its current stage to another stage.

**Parameters**

* `destination_stage_uuid` (UUID): Unique identifier of the stage to move the task to.
* `bundle` (Optional\[Bundle]): Optional bundle to be included with the move.

**Returns**

None

#### issues

```python theme={"dark"}
@property
def issues() -> TaskIssues
```

Returns the issue client for the task.
