# タスクの作成

`POST /api/task`

URL: https://repsona.com/ja/api/post-task

タスクを作成します。

## リクエストボディ

| name | in | type | required | description |
| --- | --- | --- | --- | --- |
| `name` | body | string | 必須 | タスク名です (1 から 255 文字)。 |
| `parentId` | body | integer \| null | 必須 | 親タスクの ID です。`null` にすると最上位のタスクになります。 |
| `projectId` | body | integer | 必須 | タスクが属するプロジェクトの ID です。 |
| `responsibleUserId` | body | integer \| null | 必須 | 担当者のユーザー ID です。`null` にすると担当者なしになります。 |
| `ballHoldingUserId` | body | integer \| null | 必須 | ボールを持っている人 (次に動く人) のユーザー ID です。`null` にすると誰も持っていない状態になります。 |
| `statusId` | body | integer \| null | 必須 | ステータスの ID です。タスクのプロジェクトのステータスを指定します。`null` にするとステータスなしになります。 |
| `milestoneId` | body | integer \| null | 必須 | マイルストーンの ID です。タスクのプロジェクトのマイルストーンを指定します。`null` にするとマイルストーンなしになります。 |
| `priority` | body | integer \| null |  | 優先度です。`1` が高、`2` が中、`3` が低です。`null` にすると優先度なしになります。 |
| `description` | body | string \| null |  | タスクの説明です (Markdown、20,000 文字まで)。`null` にすると空になります。 |
| `startDate` | body | number \| null |  | 開始日です (Unix ミリ秒)。`null` にすると未設定になります。 |
| `dueDate` | body | number \| null |  | 期日です (Unix ミリ秒)。`null` にすると未設定になります。 |
| `extra` | body | object \| null |  | 表示用の追加設定です。意味を持つのは `color` (`#8CC230` のような色の文字列、または `null`) だけです。 |
| `tags` | body | string[] |  | 付けるタグの名前です。まだ存在しないタグは新しく作られます。 |
| `subTasks` | body | object[] |  | 新しいタスクの下に作るサブタスクです (100 件まで)。プロジェクトとステータスは新しいタスクと同じになります。 |

## リクエスト

```sh
curl -X POST "https://<space>.repsona.com/api/task" \
  -H "Authorization: Bearer $REPSONA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Write release notes",
    "parentId": null,
    "projectId": 296,
    "responsibleUserId": 1127,
    "ballHoldingUserId": 1127,
    "statusId": 195,
    "milestoneId": 38,
    "priority": 1,
    "description": "Summarize the changes in the new website for the **launch announcement**.",
    "startDate": 1794182400000,
    "dueDate": 1794528000000,
    "tags": [
      "Design"
    ],
    "subTasks": [
      {
        "name": "Collect screenshots",
        "responsibleUserId": 1127,
        "dueDate": 1794268800000
      }
    ]
  }'
```

## レスポンス

- 200: Task created
- 400: Invalid request payload
- 401: Authentication is required

## レスポンスの例

```json
{
  "task": {
    "id": 100442,
    "parentId": null,
    "projectId": 296,
    "responsibleUserId": 1127,
    "ballHoldingUserId": 1127,
    "statusId": 195,
    "milestoneId": 38,
    "sortOrder": null,
    "statusBoardSortOrder": null,
    "priorityBoardSortOrder": null,
    "responsibleUserBoardSortOrder": null,
    "ballHoldingUserBoardSortOrder": null,
    "milestoneBoardSortOrder": null,
    "name": "Write release notes",
    "planned": null,
    "actual": null,
    "priority": 1,
    "extra": null,
    "startDate": 1794182400000,
    "dueDate": 1794528000000,
    "createdAt": 1793662651065,
    "updatedAt": 1793662651065,
    "deletedAt": null,
    "tagIds": [
      90
    ]
  },
  "siblings": [],
  "subTasks": [
    {
      "id": 100445,
      "parentId": 100442,
      "projectId": 296,
      "responsibleUserId": 1127,
      "ballHoldingUserId": null,
      "statusId": 195,
      "milestoneId": null,
      "sortOrder": 1000,
      "statusBoardSortOrder": null,
      "priorityBoardSortOrder": null,
      "responsibleUserBoardSortOrder": null,
      "ballHoldingUserBoardSortOrder": null,
      "milestoneBoardSortOrder": null,
      "name": "Collect screenshots",
      "planned": null,
      "actual": null,
      "priority": null,
      "extra": null,
      "startDate": null,
      "dueDate": 1794268800000,
      "createdAt": 1793662651084,
      "updatedAt": 1793662651084,
      "deletedAt": null,
      "tagIds": []
    }
  ]
}
```
