# タスクの検索

`GET /api/search/task`

URL: https://repsona.com/ja/api/get-search-task

条件に合うタスクを、参加しているプロジェクトの中から検索します。

## パラメーター

| name | in | type | required | description |
| --- | --- | --- | --- | --- |
| `projectId` | query | "@all" \| integer | 必須 | プロジェクト ID。`@all` を渡すと、参加中の終了していないプロジェクトすべてが対象になります。 |
| `q` | query | string |  | タスク名と説明から探すキーワード (200 文字まで)。スペースで区切ると、すべてに一致するタスクだけが対象です。 |
| `statusIds` | query | string |  | カンマ区切りのステータス ID (100 件まで)。`none` を渡すと未設定のタスクに一致します。 |
| `statusMode` | query | and \| or \| exclude |  | `statusIds` の使い方。`and` は列挙した値のいずれかに一致し、ほかの条件とも満たす必要があります。`or` は列挙した値のいずれかに一致し、`or` を指定した条件のどれか 1 つに合えば対象になります。`exclude` はどの値にも一致しないタスクを返します。省略すると `and` です。 |
| `milestoneIds` | query | string |  | カンマ区切りのマイルストーン ID (100 件まで)。`none` を渡すと未設定のタスクに一致します。 |
| `milestoneMode` | query | and \| or \| exclude |  | `milestoneIds` の使い方。`and` は列挙した値のいずれかに一致し、ほかの条件とも満たす必要があります。`or` は列挙した値のいずれかに一致し、`or` を指定した条件のどれか 1 つに合えば対象になります。`exclude` はどの値にも一致しないタスクを返します。省略すると `and` です。 |
| `priorities` | query | string |  | カンマ区切りの優先度 (100 件まで)。`1` が高、`2` が中、`3` が低です。`none` を渡すと優先度が未設定のタスクに一致します。 |
| `priorityMode` | query | and \| or \| exclude |  | `priorities` の使い方。`and` は列挙した値のいずれかに一致し、ほかの条件とも満たす必要があります。`or` は列挙した値のいずれかに一致し、`or` を指定した条件のどれか 1 つに合えば対象になります。`exclude` はどの値にも一致しないタスクを返します。省略すると `and` です。 |
| `responsibleUserIds` | query | string |  | カンマ区切りの担当者のユーザー ID (100 件まで)。`none` を渡すと未設定のタスクに一致します。 |
| `responsibleUserMode` | query | and \| or \| exclude |  | `responsibleUserIds` の使い方。`and` は列挙した値のいずれかに一致し、ほかの条件とも満たす必要があります。`or` は列挙した値のいずれかに一致し、`or` を指定した条件のどれか 1 つに合えば対象になります。`exclude` はどの値にも一致しないタスクを返します。省略すると `and` です。 |
| `ballHoldingUserIds` | query | string |  | カンマ区切りのボール保持者 (次に動く人) のユーザー ID (100 件まで)。`none` を渡すと未設定のタスクに一致します。 |
| `ballHoldingUserMode` | query | and \| or \| exclude |  | `ballHoldingUserIds` の使い方。`and` は列挙した値のいずれかに一致し、ほかの条件とも満たす必要があります。`or` は列挙した値のいずれかに一致し、`or` を指定した条件のどれか 1 つに合えば対象になります。`exclude` はどの値にも一致しないタスクを返します。省略すると `and` です。 |
| `tagIds` | query | string |  | カンマ区切りのタグ ID (100 件まで)。`none` を渡すと未設定のタスクに一致します。 |
| `tagMode` | query | and \| or \| exclude |  | `tagIds` の使い方。`and` は列挙した値のいずれかに一致し、ほかの条件とも満たす必要があります。`or` は列挙した値のいずれかに一致し、`or` を指定した条件のどれか 1 つに合えば対象になります。`exclude` はどの値にも一致しないタスクを返します。省略すると `and` です。 |
| `dueDateFrom` | query | integer |  | この日時以降が期限のタスクだけを返します (Unix エポックミリ秒)。 |
| `dueDateTo` | query | integer |  | この日時以前が期限のタスクだけを返します (Unix エポックミリ秒)。 |
| `hasDueDate` | query | 0 \| 1 \| true \| false |  | `true` で期限のあるタスクだけ、`false` で期限のないタスクだけを返します (`true`、`false`、`1`、`0`)。省略するとどちらも返します。 |
| `includeClosed` | query | 0 \| 1 \| true \| false |  | 完了済み (クローズされたステータス) のタスクを含めるかどうか (`true`、`false`、`1`、`0`)。省略すると `false` です。 |
| `overdueOnly` | query | 0 \| 1 \| true \| false |  | `true` にすると、期限を過ぎた未完了のタスクだけを返します (完了済みのタスクは常に除きます)。省略すると `false` です。 |
| `result` | query | ids \| items |  | レスポンスの形。`ids` は一致したタスクの ID、`items` はタスクの概要を 1 ページ 30 件で返します。省略すると `ids` です。 |
| `page` | query | integer |  | ページ番号 (1 から)。`result` が `items` のときだけ使われます。 |

## リクエスト

```sh
curl -X GET "https://<space>.repsona.com/api/search/task" \
  -H "Authorization: Bearer $REPSONA_API_KEY"
```

## レスポンス

- 200: Matching tasks ({ taskIds, truncated } or { items, hasMore })
- 400: Invalid query
- 401: Authentication is required

## レスポンスの例

```json
{
  "items": [
    {
      "id": 100434,
      "name": "Publish the release notes",
      "excerpt": "Post the release checklist results to the team wiki.",
      "projectFullName": "Website renewal",
      "statusName": null,
      "statusIsClosed": false,
      "dueDate": 1794267419499,
      "responsibleUser": {
        "id": 1101,
        "name": "aiko",
        "fullName": "Aiko Tanaka",
        "avatarUrl": null,
        "color": null,
        "state": "active"
      },
      "ballHoldingUser": null,
      "updatedAt": 1793662619499
    }
  ],
  "hasMore": false
}
```
