過去質問データ API
質問ライブラリ(過去質問データ)を扱うエンドポイント。
登録は自動で行われるため、登録用のエンドポイントはありません。
| 登録経路 | 対応する API |
|---|---|
| 案件の出力 | 案件 API の「JSON 出力」 |
| CS からの取り込み | 取り込み API の「bundle インポート」 |
流用は 設問 API の「設問流用」 と セクション API の「外部由来から 1 セクション一括挿入」 で行います。
認証・レスポンス形式・エラーの扱いは API 定義 を参照。
メソッド
HTTP メソッド
| メソッド | URI | 概要 |
|---|---|---|
| GET | /api/question-library |
過去質問データ一覧取得 |
| DELETE | /api/question-library/{itemId} |
過去質問データ削除 |
リソース定義
過去質問データスキーマ
| フィールド | データ型 | 備考 |
|---|---|---|
| id | string | UUID |
| sourceSurveyId | string | null | 内部由来の場合の元案件 UUID |
| sourceSurveyTitle | string | null | 元案件のタイトル |
| sourceQuestionId | string | null | 内部由来の場合の元設問 UUID |
| sourceSectionId | string | 元セクションの UUID |
| sourceExternalSurveyId | string | null | 外部由来の場合の外部調査票 UUID |
| sourceExternalSurveyName | string | null | 外部調査票の名前 |
| sourceExternalQuestionId | string | null | 外部由来の場合の外部設問 UUID |
| category | string | カテゴリ。検索の絞り込みに使う |
| sectionTitle | string | 元のセクションタイトル |
| questionType | enum | single / multi / free_text / matrix / intro / pulldown |
| normalizedPayload | object | 正規化された設問内容 |
| createdAt | string | 登録日時(ISO 8601) |
| createdBy | string | null | 登録者のユーザー ID |
normalizedPayload
| フィールド | データ型 | 備考 |
|---|---|---|
| promptText | string | 設問文 |
| options | object[] | 選択肢(label / isExclusive / allowOtherInput / isNotApplicable) |
| subItems | object[] | サブ項目(マトリクスの列など)。label のみ |
| subQuestions | object[] | サブ設問(label + options) |
分岐は含まれない
正規化ペイロードには分岐ルール・表示ロジックが含まれません。流用後にあらためて設定する必要があります。
認証要件
x-user-email / x-user-name ヘッダによるユーザー認証が必要です。
一覧取得は認証済みユーザーであれば実行できます。削除は 管理者のみ で、それ以外は 403 Forbidden を返します。
登録者本人でも削除できない
createdBy に登録者が記録されますが、削除の可否には影響しません。管理者(SURVEY_ADMIN_EMAILS に登録されたユーザー)でなければ、自分が登録したデータでも削除できません。
過去質問データ一覧取得
概要
過去質問データの一覧を取得します。キーワードとカテゴリで絞り込めます。
URI
クエリパラメータ
| パラメータ | データ型 | 必須 | 備考 |
|---|---|---|---|
| q | string | 設問文・セクションタイトルでのキーワード検索 | |
| category | string | カテゴリでの絞り込み |
レスポンス(200 OK)
{
"ok": true,
"data": [
{
"id": "…",
"sourceSurveyId": "…",
"sourceSurveyTitle": "ブランド認知度調査",
"sourceQuestionId": "…",
"sourceSectionId": "…",
"sourceExternalSurveyId": null,
"sourceExternalSurveyName": null,
"sourceExternalQuestionId": null,
"category": "ブランド",
"sectionTitle": "認知",
"questionType": "multi",
"normalizedPayload": {
"promptText": "以下のうち、知っているブランドをすべてお選びください。",
"options": [
{ "label": "ブランド A", "isExclusive": false, "allowOtherInput": false, "isNotApplicable": false }
]
},
"createdAt": "2026-08-10T00:00:00.000Z",
"createdBy": "…"
}
]
}
例外処理
| 説明 | ステータスコード | ステータス名 |
|---|---|---|
| 認証ヘッダが欠落 | 401 | Unauthorized |
過去質問データ削除
概要
過去質問データを削除します。実行できるのは 管理者のみ です。
URI
| パラメータ | データ型 | 必須 | 備考 |
|---|---|---|---|
| itemId | string | ◯ | 過去質問データの UUID |
レスポンス(200 OK)
例外処理
| 説明 | ステータスコード | ステータス名 |
|---|---|---|
| 管理者でない | 403 | Forbidden |
| 過去質問データが存在しない | 404 | Not Found |
処理フロー
- 管理者でなければ 403 を返す(データの存在確認より先に判定される)
- 該当データを削除する
- 削除対象が 1 件もなければ 404 を返す
出力のたびに置き換えられる
案件を再出力すると、その案件由来の登録は削除されて現在の設問で再登録されます。手動で削除しても、再出力すれば復活します。