# 合言葉共有

| 要件 | 値 |
|----|----|
| ログインの有無 | True |
| 合言葉共有トグル | True |
| パスワード（合言葉） | string |
| エンドポイント | /v1/files/watchword |
| メソッド | POST |

## 概要

「合言葉」を介して、サーバーにファイルを保存せずブラウザ間で直接ファイルを転送する機能です。同一LAN内・インターネット越し（異なるネットワーク間）の双方に対応しています。

**解決する問題**: 共有リンクの発行や権限設定の手間を省き、口頭で「合言葉」を伝えるだけでセキュアな受け渡しを可能にします。

**プライバシー**: 機密ファイルはデバイス間（Peer-to-Peer）で完結するため、サーバーに実体やログが残りません。

## フロント→バックに必要なデータ

| キー | 値の情報 |
|----|----|
| ファイル名 | string |
| ファイル形式 | string |
| ファイルサイズ | integer |
| MIME形式 | string |
| 送信者ID | string |
| 受信者ID | string |
| ファイルハッシュ | string |
| チャンクサイズ | integer |
| 共有有効期限（任意） | datetime |
| ダウンロード可 | boolean |

## バック→フロントに必要なデータ

| キー | 値の種類 |
|----|----|
| 合言葉 | String |
|    |    |

## 実装要件

### 必要なコンポーネント

| コンポーネント | 技術 | 備考 |
|---|---|---|
| シグナリング | Rust (Axum) + WebSocket | SDPオファー/ICE候補の中継 |
| ルーム管理 | Valkey | 合言葉をキーにルーム状態管理・TTL付き |
| P2P転送 | WebRTC DataChannel | バイナリ直接転送（サーバー経由なし） |

詳細: [インフラ/WebRTCシグナリング.md](../../インフラ/WebRTCシグナリング.md)
