---
title: REST APIを始める
description: OpenTester REST APIでフィードバックを取得し、修正作業を作成してGitHub PRを関連付けます。
---

# REST APIを始める {#rest-api-quick-start}

Automation APIを使うと、開発ツールからフィードバックを読み、実装依頼を記録し、完成したGitHub PRを関連付けられます。[MCP](/ja/mcp/)も同じAPIを使います。独自ツールやCIから直接利用できます。

## 基本URL {#base-url}

ホストされたAPIの基本URLは`https://api.opentester.app/api/v1`です。セルフホストの場合はHTTPSオリジンに`/api/v1`を付けます。次はローカルAPIの例です。

```sh
export OPENTESTER_API_URL="http://localhost:4000/api/v1"
export OPENTESTER_APP_ID="aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa"
```

`OPENTESTER_APP_ID`をコンソールのUUIDに置き換え、そのアプリのトークンを秘密の環境変数`OPENTESTER_AGENT_TOKEN`として渡します。`docs.`ドメインはAPIではありません。

::: tip 事前準備
アプリ所有者として**アプリ情報とSDK → コーディングエージェント接続**でトークンを発行します。一連の操作には`feedback:read`、`work-items:read`、`work-items:write`が必要です。[認証](/ja/api/authentication)を参照してください。
:::

## 最初のリクエスト {#first-request}

```sh
curl --fail-with-body --get \
  "$OPENTESTER_API_URL/apps/$OPENTESTER_APP_ID/automation/feedback" \
  --header "Authorization: Bearer $OPENTESTER_AGENT_TOKEN" \
  --header "Accept-Language: ja" \
  --data-urlencode "status=open" \
  --data-urlencode "limit=20"
```

フィードバックがない場合の正常な応答です。

```json
{
  "feedback": [],
  "total": 0,
  "limit": 20,
  "offset": 0
}
```

## エンドポイント {#endpoints}

以下はすべて`/api/v1/apps/:appId/automation`からの相対パスです。

| メソッド | パス | 目的 | エージェント権限 |
| --- | --- | --- | --- |
| `GET` | `/feedback` | フィードバック一覧 | `feedback:read` |
| `GET` | `/feedback/:issueId` | フィードバック詳細 | `feedback:read` |
| `POST` | `/change-requests` | 修正作業作成 | `work-items:write` |
| `GET` | `/change-requests` | 修正作業一覧 | `work-items:read` |
| `GET` | `/change-requests/:requestId` | 修正作業詳細 | `work-items:read` |
| `POST` | `/change-requests/:requestId/pull-request` | GitHub PR関連付け | `work-items:write` |
| `GET` | `/tokens` | トークン一覧 | Webセッションのみ |
| `POST` | `/tokens` | トークン発行 | Webセッションのみ |
| `DELETE` | `/tokens/:tokenId` | トークン取り消し | Webセッションのみ |

操作はURLのアプリに限定されます。所有者が同じでも、アプリごとに別のトークンを発行します。

## リクエストとレスポンスの規則 {#request-and-response-conventions}

- 本文は`Content-Type: application/json`のJSONで、上限は64 KiBです。
- IDはUUID文字列、日時はUTCのISO 8601文字列です。
- 未定義の本文フィールドやqueryは`400`になります。
- 成功時は`GET`が`200`、`POST`が`201`、取り消しの`DELETE`が`200`です。作成の再試行も`201`です。
- 一覧は`total`、`limit`、`offset`を含み、詳細は`feedback`または`changeRequest`で包みます。
- 応答には`Cache-Control: no-store`を設定します。

### ページ分割 {#pagination}

フィードバックと修正作業の一覧は同じパラメーターを使います。

| パラメーター | 既定値 | 範囲 |
| --- | --- | --- |
| `limit` | `20` | 整数`1`–`50` |
| `offset` | `0` | 整数`0`–`100000` |

作成日時の降順で、同時刻ではID降順です。次ページには`offset + limit`を使います。取得中に新規データが追加される可能性があるため、複数ページを集めるときはIDで重複除去します。カーソル方式は未対応です。

### 言語とエラー {#language-and-errors}

対応するエラーメッセージには`Accept-Language: en`、`ko`、`ja`を使えます。選択された言語は`Content-Language`で確認します。分岐には翻訳される`message`ではなくHTTPステータスを使います。[エラーと再試行](/ja/api/errors)を参照してください。

## 連携の流れ {#integration-workflow}

1. [フィードバック取得](/ja/api/feedback)でIDと再現手順を確認します。
2. [修正作業を作成](/ja/api/change-requests)し、目標、完了条件、関連報告を記録します。
3. 開発ツールで実装・テストし、GitHub PRを作成します。
4. 同じ作業にPR URLを関連付けます。

作業作成はエージェントを起動しません。PR関連付けはURLの記録であり、マージ、デプロイ、フィードバック状態の変更は行いません。アプリからの報告には[Android SDK](/ja/sdk/)を使います。
