> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/get-started/ko/platform/workspaces/trash.md).

# 휴지통

## 소개

삭제된 프로젝트, 데이터셋 버전, 트레이닝, 워크플로는 영구적으로 제거되기 전에 30일 동안 작업공간의 휴지통으로 이동됩니다. 30일 보존 기간 내에는 언제든지 휴지통에서 항목을 복원할 수 있으며, 더 이상 필요하지 않다고 확신하는 경우 즉시 영구 삭제할 수도 있습니다.

## 웹 앱

### 휴지통 열기

작업공간의 설정으로 이동한 다음 하위 탐색에서 휴지통을 선택하세요. 이 페이지에는 삭제된 모든 프로젝트, 버전, 트레이닝, 워크플로가 유형별로 묶여 표시되며, 각 항목을 삭제한 사람, 삭제 시점, 영구 정리까지 남은 일수도 함께 나옵니다.

### 항목 복원

한 행의 복원을 클릭하여 해당 항목을 복원하거나, 체크박스로 여러 항목을 선택한 뒤 복원을 클릭해 한 번에 모두 복원할 수 있습니다. 모두 복원은 작업공간 휴지통의 모든 항목을 복원합니다.

복원된 항목은 삭제되었던 동일한 위치로 작업공간에 즉시 다시 나타납니다. 데이터셋 버전은 상위 프로젝트가 아직 활성 상태일 때만 복원할 수 있습니다. 상위 프로젝트도 휴지통에 있다면 먼저 프로젝트를 복원한 다음 해당 버전을 복원하세요. 트레이닝도 마찬가지로, 먼저 상위 프로젝트와 버전을 복원해야 합니다.

### 항목 영구 삭제

30일 보존 기간을 건너뛰고 항목을 바로 제거하려면 한 행에서 영구 삭제를 클릭하거나 여러 항목을 선택한 다음 영구 삭제를 클릭하세요. 휴지통 비우기는 작업공간 휴지통의 모든 항목을 한 번에 제거합니다. 영구 삭제는 되돌릴 수 없습니다.

영구 삭제는 웹 앱의 이 페이지에서만 사용할 수 있습니다. 실수로 실행된 스크립트나 자동화가 데이터를 복구 불가능하게 파괴하지 않도록 REST API, Python SDK, CLI에는 노출되지 않습니다.

### 삭제하면 무슨 일이 일어나나요

프로젝트, 버전, 트레이닝 또는 워크플로가 삭제되면:

* 항목이 작업공간과 모든 API 목록에서 숨겨집니다.
* 해당 항목에 대해 진행 중이던 트레이닝 작업은 자동으로 취소되어, 삭제 중인 항목에 크레딧을 계속 사용하지 않게 됩니다.
* 프로젝트의 경우, 해당 버전의 학습된 모델이 서비스 제공을 중단합니다.
* 트레이닝의 경우, 해당 실행에서 생성된 모델도 숨겨지며, 버전의 `{project}/{version}` 모델 ID가 다른 모델로 바뀔 수 있습니다.
* 해당 항목의 저장공간은 30일 보존 기간이 만료되거나 항목을 영구 삭제할 때까지 계속 작업공간 요금제에 포함됩니다.

프로젝트를 삭제할 때 "Asset Library의 이미지도 삭제"를 체크했다면, 휴지통 행의 호박색 표시기는 해당 프로젝트에만 속한 이미지도 프로젝트가 영구 정리될 때 함께 제거됨을 나타냅니다. 다른 프로젝트와 공유되는 이미지는 항상 보존됩니다.

### 누가 휴지통을 사용할 수 있나요

휴지통과 그 작업에 대한 접근은 역할 기반 접근 제어로 관리됩니다. 기본 Owner 역할에는 모든 휴지통 권한이 부여됩니다. 개별 휴지통 권한(`view_trash`, `trash_dataset`, `restore_dataset`, `trash_version`, `restore_version`, `trash_training`, `restore_training`, `delete_training`, `trash_workflow`, `restore_workflow`)을 작업공간의 역할 기반 접근 제어 설정에서 사용자 지정 역할에 할당할 수 있습니다.

## HTTP API

휴지통으로 이동된 프로젝트와 데이터셋 버전은 영구적으로 정리되기 전 30일 동안 보존됩니다. REST API를 통해 항목을 삭제, 목록 조회, 복원할 수 있으며, 영구 삭제는 웹 UI에서만 가능합니다(하단의 [영구 삭제](#permanent-deletion) 참고를 보세요).

프로젝트나 버전에 대해 진행 중이던 트레이닝 작업은 항목이 휴지통으로 이동될 때 자동으로 취소됩니다.

### 프로젝트 삭제

{% tabs %}
{% tab title="REST API" %}
프로젝트를 휴지통으로 이동:

```url
https://api.roboflow.com/:workspace/:project
```

```bash
curl "https://api.roboflow.com/my-workspace/my-detector?api_key=$ROBOFLOW_API_KEY" \\
  -X DELETE
```

예시 응답:

```json
{
  "deleted": true,
  "type": "project",
  "workspace": "my-workspace",
  "project": "my-detector",
  "projectId": "d_abc123",
  "trash": true
}
```

호출하는 API 키에는 `project:update` 스코프가 있어야 합니다.
{% endtab %}
{% endtabs %}

### 버전 삭제

{% tabs %}
{% tab title="REST API" %}
단일 데이터셋 버전을 휴지통으로 이동:

```url
https://api.roboflow.com/:workspace/:project/:version
```

```bash
curl "https://api.roboflow.com/my-workspace/my-detector/3?api_key=$ROBOFLOW_API_KEY" \\
  -X DELETE
```

예시 응답:

```json
{
  "deleted": true,
  "type": "version",
  "workspace": "my-workspace",
  "project": "my-detector",
  "projectId": "d_abc123",
  "version": "3",
  "trash": true
}
```

호출하는 API 키에는 `version:update` 스코프가 있어야 합니다.
{% endtab %}
{% endtabs %}

### 워크플로 삭제

{% tabs %}
{% tab title="REST API" %}
워크플로를 휴지통으로 이동:

```url
https://api.roboflow.com/:workspace/workflows/:workflowUrl
```

```bash
curl "https://api.roboflow.com/my-workspace/workflows/slow-webhooks?api_key=$ROBOFLOW_API_KEY" \\
  -X DELETE
```

예시 응답:

```json
{
  "deleted": true,
  "type": "workflow",
  "workspace": "my-workspace",
  "workflow": "slow-webhooks",
  "workflowId": "wf_abc123",
  "trash": true
}
```

호출하는 API 키에는 `workflow:update` 스코프가 있어야 합니다.
{% endtab %}
{% endtabs %}

### 휴지통의 항목 목록 보기

{% tabs %}
{% tab title="REST API" %}
현재 작업공간 휴지통에 있는 모든 항목을 나열:

```url
https://api.roboflow.com/:workspace/trash
```

```bash
curl "https://api.roboflow.com/my-workspace/trash?api_key=$ROBOFLOW_API_KEY"
```

예시 응답:

```json
{
  "items": [
    {
      "type": "project",
      "id": "d_abc123",
      "name": "My Detector",
      "url": "my-detector",
      "deletedAt": "2026-04-20T17:05:33.000Z",
      "scheduledCleanupAt": "2026-05-20T17:05:33.000Z",
      "deletedBy": "uid-of-user",
      "deletedByName": "Alice"
    },
    {
      "type": "version",
      "id": "3",
      "name": "augmented-416",
      "parentId": "d_xyz789",
      "parentName": "My Other Project",
      "parentUrl": "my-other-project",
      "parentInTrash": false,
      "deletedAt": "2026-04-21T12:14:02.000Z",
      "scheduledCleanupAt": "2026-05-21T12:14:02.000Z"
    }
  ],
  "sections": {
    "projects": [ ... ],
    "versions": [ ... ],
    "workflows": [ ... ],
    "trainings": [ ... ]
  }
}
```

각 항목에는 `scheduledCleanupAt` 타임스탬프가 포함됩니다. 이는 해당 항목이 영구 정리 대상이 되는 시점을 의미합니다. 프로젝트에는 또한 `cleanupDeleteImages` 불리언이 포함되어, 정리 실행 시 프로젝트에만 속한 이미지도 함께 삭제될지 여부를 나타냅니다.

호출하는 API 키에는 `project:read` 스코프가 있어야 합니다.
{% endtab %}
{% endtabs %}

### 항목 복원

{% tabs %}
{% tab title="REST API" %}
휴지통에서 프로젝트, 버전, 트레이닝 또는 워크플로를 복원:

```url
https://api.roboflow.com/:workspace/trash/restore
```

```bash
curl "https://api.roboflow.com/my-workspace/trash/restore?api_key=$ROBOFLOW_API_KEY" \\
  -X POST \\
  -H "Content-Type: application/json" \
  -d '{"type": "project", "id": "d_abc123"}'
```

버전의 경우 상위 프로젝트 ID도 포함해야 합니다:

```bash
curl "https://api.roboflow.com/my-workspace/trash/restore?api_key=$ROBOFLOW_API_KEY" \\
  -X POST \\
  -H "Content-Type: application/json" \
  -d '{"type": "version", "id": "3", "parentId": "d_abc123"}'
```

버전을 복원하려면 상위 프로젝트가 여전히 활성 상태여야 합니다(즉, 휴지통에 있으면 안 됩니다). 상위 프로젝트도 휴지통에 있다면 먼저 복원하세요. 트레이닝을 복원하려면 해당 프로젝트와 버전이 모두 활성 상태여야 합니다.

`type` 다음 중 하나여야 합니다 `project`, `version`, `training`, 또는 `workflow`. 필요한 API 키 스코프는 **항목 유형별** - 복원 중인 항목에 대해 올바른 스코프가 없으면 요청은 401로 실패합니다:

| `type`     | 필수 스코프            |
| ---------- | ----------------- |
| `project`  | `project:update`  |
| `version`  | `version:update`  |
| `training` | `version:update`  |
| `workflow` | `workflow:update` |

또한 엔드포인트는 `targetItem.owner === :workspace` 를 위임하기 전에 검증하므로, 작업공간 A에서 유효한 키로 작업공간 B에 있는 항목은 복원할 수 없습니다.
{% endtab %}
{% endtabs %}

### 영구 삭제

REST API에서는 의도적으로 영구 삭제를 사용할 수 없습니다. 휴지통 비우기와 단일 휴지통 항목 즉시 삭제는 데이터를 복구 불가능하게 파괴하므로, 실수로 실행된 curl이나 자동화가 이를 트리거하지 못하게 하려는 것입니다. 이러한 작업은 명시적인 확인이 있는 Roboflow 웹 앱의 휴지통 보기에서만 사용할 수 있습니다.

휴지통에 남아 있는 항목은 30일 보존 기간이 지나면 자동으로 정리됩니다.

## Python SDK

Python SDK를 통해 삭제된 프로젝트와 데이터셋 버전은 작업공간의 **휴지통** 으로 이동되며, 영구적으로 정리되기 전 30일 동안 보존됩니다. 보존 기간 내에는 이를 작업공간으로 다시 복원할 수 있습니다.

프로젝트나 버전에 연관된 진행 중 트레이닝 작업은 항목이 휴지통으로 이동될 때 자동으로 취소되므로, 크레딧을 계속 사용하지 않게 됩니다.

### 프로젝트 삭제

```python
import roboflow

rf = roboflow.Roboflow(api_key="YOUR_API_KEY")
project = rf.workspace().project("my-detector")

project.delete()
```

프로젝트는 작업공간 프로젝트 목록에서 즉시 숨겨지며 설정 → 휴지통 아래의 휴지통 보기에 표시됩니다.

### 프로젝트 복원

아직 `프로젝트` 객체에 대한 참조가 있다면, `restore()` 를 호출하세요:

```python
project.restore()
```

SDK는 슬러그를 기준으로 작업공간 휴지통에서 프로젝트를 찾아 복원합니다. `RuntimeError` 프로젝트가 현재 휴지통에 없으면 발생합니다.

### 버전 삭제

단일 데이터셋 버전을 휴지통으로 이동합니다. 해당 버전에 대해 진행 중인 트레이닝은 취소됩니다.

```python
import roboflow

rf = roboflow.Roboflow(api_key="YOUR_API_KEY")
project = rf.workspace().project("my-detector")
version = project.version(3)

version.delete()
```

### 버전 복원

```python
version.restore()
```

버전을 복원하려면 상위 프로젝트가 여전히 활성 상태여야 합니다(즉, 휴지통에 있으면 안 됩니다). 필요하면 먼저 프로젝트를 복원하세요.

### 휴지통의 항목 목록 보기

사용 `Workspace.trash()` 를 사용해 현재 작업공간 휴지통에 무엇이 있는지 확인하세요:

```python
import roboflow

rf = roboflow.Roboflow(api_key="YOUR_API_KEY")
ws = rf.workspace()

trash = ws.trash()
for item in trash["items"]:
    print(item["type"], item["name"], "cleanup:", item["scheduledCleanupAt"] )
```

`trash["sections"]` 는 동일한 항목을 다음 기준으로 묶습니다 `프로젝트`, `버전`와 `워크플로` 편의를 위해.

### ID로 복원

이미 `프로젝트` 또는 `버전` 핸들이 없다면(예: 이전 세션에서 삭제된 항목을 복원하는 경우), `Workspace.restore_from_trash()` 의 반환값에 있는 ID를 사용하세요. `trash()`:

```python
trash = ws.trash()
project_in_trash = trash["sections"]["projects"][0]

ws.restore_from_trash("project", project_in_trash["id"])
```

버전의 경우 상위 프로젝트 ID를 전달하세요:

```python
version_in_trash = trash["sections"]["versions"][0]
ws.restore_from_trash(
    "version",
    version_in_trash["id"],
    parent_id=version_in_trash["parentId"],
)
```

### 워크플로

SDK는 현재 `워크플로` 객체를 노출하지 않지만, 저수준 `rfapi` 헬퍼를 통해 워크플로를 소프트 삭제하고 `Workspace.restore_from_trash("workflow", ...)`:

```python
from roboflow.adapters import rfapi

# 소프트 삭제 - 워크플로를 30일 동안 휴지통으로 이동합니다.
rfapi.delete_workflow(api_key, ws.url, "slow-webhooks")

# 복원 - 먼저 휴지통에서 워크플로의 ID를 찾습니다.
trash = ws.trash()
wf = next(w for w in trash["sections"]["workflows"] if w["url"] == "slow-webhooks")
ws.restore_from_trash("workflow", wf["id"] )
```

### 영구 삭제

SDK에서는 의도적으로 영구 삭제를 사용할 수 없습니다. 휴지통 비우기와 단일 휴지통 항목 즉시 삭제는 데이터를 복구 불가능하게 파괴하므로, 실수로 실행된 스크립트가 이를 트리거하지 못하게 하려는 것입니다. 이러한 작업은 명시적인 확인 대화 상자가 있는 Roboflow 웹 앱의 휴지통 보기에서만 사용할 수 있습니다.

휴지통에 남아 있는 항목은 30일 보존 기간이 지나면 자동으로 정리되므로, 수동으로 조치해야 하는 경우는 드뭅니다.

## CLI

프로젝트, 데이터셋 버전, 워크플로는 모두 작업공간의 **휴지통**으로 이동될 수 있으며, 영구적으로 정리되기 전 30일 동안 보존됩니다. 보존 기간 내에는 이를 작업공간으로 다시 복원할 수 있습니다.

프로젝트나 버전에 연결된 진행 중 트레이닝 작업은 항목이 휴지통으로 이동될 때 자동으로 취소되므로, 삭제하는 항목에 크레딧을 계속 사용하지 않게 됩니다.

### 프로젝트 삭제

프로젝트를 휴지통으로 이동:

```bash
roboflow project delete <workspace>/<project>
```

예시:

```bash
roboflow project delete my-workspace/my-detector
```

이 명령은 프로젝트를 이동하기 전에 확인을 요청합니다. 스크립트에서 사용하려면 `--yes` (또는 `-y`)를 전달해 확인 프롬프트를 건너뛸 수 있습니다:

```bash
roboflow project delete my-workspace/my-detector --yes
```

### 프로젝트 복원

```bash
roboflow project restore <workspace>/<project>
```

예시:

```bash
roboflow project restore my-workspace/my-detector
```

CLI는 슬러그를 기준으로 작업공간 휴지통에서 프로젝트를 찾아 복원합니다. 프로젝트가 현재 휴지통에 없으면 명령은 오류로 종료됩니다.

### 버전 삭제

단일 데이터셋 버전을 휴지통으로 이동합니다. 해당 버전에 대해 진행 중인 트레이닝은 취소됩니다.

```bash
roboflow version delete <workspace>/<project>/<version>
```

예시:

```bash
roboflow version delete my-workspace/my-detector/3
```

확인을 건너뛰려면 `--yes` 를 전달하세요.

### 버전 복원

```bash
roboflow version restore <workspace>/<project>/<version>
```

예시:

```bash
roboflow version restore my-workspace/my-detector/3
```

상위 프로젝트는 여전히 활성 상태여야 합니다(즉, 휴지통에 있으면 안 됩니다) - 필요하면 먼저 프로젝트를 복원하세요.

### 워크플로 삭제

워크플로를 휴지통으로 이동:

```bash
roboflow workflow delete <workflow>
```

예시:

```bash
roboflow workflow delete slow-webhooks
```

확인을 건너뛰려면 `--yes` (또는 `-y`)를 전달해 확인 프롬프트를 건너뛸 수 있습니다. 워크플로 URL 슬러그 또는 Firestore ID 중 어느 것이든 전달할 수 있습니다.

### 워크플로 복원

```bash
roboflow workflow restore <workflow>
```

예시:

```bash
roboflow workflow restore slow-webhooks
```

### 휴지통의 항목 목록 보기

현재 작업공간 휴지통에 있는 모든 항목을 나열:

```bash
roboflow trash list
```

```
유형       ID               이름                              삭제됨       정리_AT    작성자
데이터셋    d_abc123         My Detector                       2026-04-20    2026-05-20    Alice
버전       3                My Detector - augmented-416 (v3)  2026-04-21    2026-05-21    Bob
워크플로   wf_def456        Preprocessing Pipeline            2026-04-19    2026-05-19    Alice
```

스크립트용 구조화된 출력은 다음과 같습니다:

```bash
roboflow --json trash list
```

### 영구 삭제

SDK 또는 CLI에서는 의도적으로 영구 삭제를 사용할 수 없습니다. 휴지통 비우기와 단일 휴지통 항목 즉시 삭제는 데이터를 복구 불가능하게 파괴하므로, 실수로 실행된 스크립트나 오타가 이를 트리거하지 못하게 하려는 것입니다. 이러한 작업은 명시적인 확인 대화 상자가 있는 Roboflow 웹 앱의 휴지통 보기에서만 사용할 수 있습니다.

휴지통에 남아 있는 항목은 30일 보존 기간이 지나면 자동으로 정리되므로, 수동으로 조치해야 하는 경우는 드뭅니다.
