# ファイルアップロード

ホワイトボックス診断など、ソースコードやファイルを入力とするワークフローでは、事前に診断対象ファイルを Takumi API にアップロードする必要があります。
利用したいワークフローがファイルを入力にとるかどうかは、[OpenAPI ドキュメント](https://api.cloud.shisho.dev/v1/docs/openapi.json)の各ワークフロー実行 API (`/o/{org_id}/workflows/{workflow_id}/dispatch`) のリクエストスキーマに定義されています。

このページでは、ファイルアップロードの仕組みと関連する制約について説明します。

## アップロードの流れ

ファイルのアップロードは、以下の 3 ステップで行います。

1. **アップロード URL の取得**: `/o/{org_id}/input-files/get-upload-url` にファイルサイズを指定してリクエストし、`file_id` と一時的な `upload_url` を取得する
2. **ファイルのアップロード**: 取得した `upload_url` に対して HTTP PUT でファイルをアップロードする（`Authorization` ヘッダーは不要）
3. **アップロードの確定**: `/o/{org_id}/input-files/confirm-upload` を呼び出してアップロードを確定する。確定して初めて、ワークフローの入力としてこのファイルを参照できるようになる

```bash
# 1. アップロード URL を取得
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
  https://api.cloud.shisho.dev/v1/o/$org_id/input-files/get-upload-url \
  --json '{"content_length": 123456}'

# 2. ファイルをアップロード
curl -s -X PUT "<upload_url>" --upload-file ./your-project.zip

# 3. アップロードを確定
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
  https://api.cloud.shisho.dev/v1/o/$org_id/input-files/confirm-upload \
  --json '{"file_id": "TIF..."}'
```

:::tip
アップロードを取りやめる場合は、`/o/{org_id}/input-files/cancel-upload` を呼び出してアップロードをキャンセルしてください。これにより、アップロードの取りやめがストレージ容量制限に正しく反映されます。
:::

## ファイルの保持期間

アップロードされたファイルは、**30日の保持期間が経過した後、自動で削除されます**。保持期間を超えてファイルを利用したい場合は、再度アップロードしてください。

## ストレージ容量の上限

ストレージ容量には上限が設定されています。不要になったファイルは `/o/{org_id}/input-files/delete` エンドポイントを用いて削除することで、容量を確保できます。
