# プロジェクトの複製

`POST /api/project/{projectId}/duplicate`

URL: https://repsona.com/ja/api/post-project-projectid-duplicate

ステータス・マイルストーン・タスクのツリー (タグを含む) を複製します。タスクのステータス・担当者・ボール保持者は空になり、ノート・メンバー・カイゼンは複製されません。

## パラメーター

| name | in | type | required | description |
| --- | --- | --- | --- | --- |
| `projectId` | path | integer | 必須 | プロジェクトの ID です。 |

## リクエストボディ

| name | in | type | required | description |
| --- | --- | --- | --- | --- |
| `key` | body | string | 必須 | 新しいプロジェクトのキーです。英数字と `_` `-` `.` で 3〜30 文字、スペース内で重複できません。 |
| `name` | body | string | 必須 | 新しいプロジェクトの表示名です (255 文字まで)。空の場合は `key` が使われます。 |
| `userIds` | body | integer[] |  | 新しいプロジェクトのメンバーに加えるユーザーの ID です (500 件まで)。あなた自身は必ず加わります。スペース外のユーザーは無視されます。 |
| `startDate` | body | integer \| null |  | 複製後のスケジュールの開始日です (エポックミリ秒)。元のタスクで最も早い開始日・期限がこの日 (UTC) になるよう、タスクの日付をずらします。省略または `null` なら元の日付のままです。 |

## リクエスト

```sh
curl -X POST "https://<space>.repsona.com/api/project/{projectId}/duplicate" \
  -H "Authorization: Bearer $REPSONA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "key": "WEB-NEXT",
    "name": "Website renewal (phase 2)",
    "userIds": [
      988
    ],
    "startDate": 1796169600000
  }'
```

## レスポンス

- 200: Duplicated project detail
- 400: Invalid body or project name already exists
- 401: Authentication is required
- 403: Not a project member
- 404: Project not found

## レスポンスの例

```json
{
  "id": 258,
  "name": "WEB-NEXT",
  "fullName": "Website renewal (phase 2)",
  "purpose": "",
  "avatarUrl": "",
  "backgroundUrl": "",
  "productImageUrl": "",
  "isClosed": false,
  "isPublic": false,
  "free": false,
  "holidays": [],
  "regularHolidays": [
    0,
    6
  ],
  "members": [
    {
      "id": 987,
      "name": "sam.carter",
      "fullName": "Sam Carter",
      "avatarUrl": null,
      "color": null,
      "state": "active"
    },
    {
      "id": 988,
      "name": "reon.walls",
      "fullName": "Reon Walls",
      "avatarUrl": null,
      "color": null,
      "state": "active"
    }
  ],
  "hasTask": true
}
```
