RelatedContent API

概要

RelatedContent APIは、Fess の関連コンテンツを管理するためのAPIです。 特定のキーワードに関連するコンテンツをカスタム表示できます。

ベースURL

/api/admin/relatedcontent

エンドポイント一覧

メソッド パス 説明
GET /settings 関連コンテンツ一覧取得
GET /setting/{id} 関連コンテンツ取得
POST /setting 関連コンテンツ作成
PUT /setting 関連コンテンツ更新
DELETE /setting/{id} 関連コンテンツ削除

関連コンテンツ一覧取得

リクエスト

GET /api/admin/relatedcontent/settings

パラメーター

パラメーター 必須 説明
size Integer いいえ 1ページあたりの件数(デフォルト: 25。fess_config.propertiespaging.page.size で変更可能)
page Integer いいえ ページ番号(1から開始、デフォルト: 1。0以下を指定した場合は1として扱われます)
term String いいえ 検索キーワードによる絞り込み(ワイルドカード検索)
content String いいえ コンテンツ本文による絞り込み(ワイルドカード検索)

レスポンス

{
  "response": {
    "version": "15.7.0",
    "status": 0,
    "settings": [
      {
        "id": "content_id_1",
        "term": "fess",
        "content": "<div>Fess is an open source search server.</div>",
        "virtualHost": "",
        "sortOrder": 0,
        "createdBy": "admin",
        "createdTime": 1700000000000,
        "updatedBy": "admin",
        "updatedTime": 1700000000000,
        "versionNo": 1
      }
    ],
    "total": 5
  }
}

注釈

settings の各要素および単一取得の setting には、保存されているエンティティの フィールドがそのまま含まれます。termcontentsortOrdervirtualHost に 加えて、監査用の createdBycreatedTimeupdatedByupdatedTime と、 楽観的ロック用の versionNo も返されます。createdTimeupdatedTime は エポックからのミリ秒(数値)です。値が未設定(null)のフィールドはレスポンスには 含まれません。また、すべてのレスポンスの response オブジェクトには、製品バージョンを 示す version が常に含まれます(詳細は Admin API 概要 を参照)。

関連コンテンツ取得

リクエスト

GET /api/admin/relatedcontent/setting/{id}

レスポンス

{
  "response": {
    "version": "15.7.0",
    "status": 0,
    "setting": {
      "id": "content_id_1",
      "term": "fess",
      "content": "<div>Fess is an open source search server.</div>",
      "virtualHost": "",
      "sortOrder": 0,
      "createdBy": "admin",
      "createdTime": 1700000000000,
      "updatedBy": "admin",
      "updatedTime": 1700000000000,
      "versionNo": 1
    }
  }
}

注釈

更新(PUT)の際に必要となる versionNo は、この取得結果に含まれる値を指定します。

関連コンテンツ作成

リクエスト

POST /api/admin/relatedcontent/setting
Content-Type: application/json

リクエストボディ

{
  "term": "search",
  "content": "<div class='related'><h3>About Search</h3><p>Learn more about search features...</p></div>",
  "sortOrder": 0,
  "virtualHost": ""
}

フィールド説明

フィールド 必須 説明
term はい 検索キーワード(最大10000文字)
content はい 表示するHTMLコンテンツ(最大10000文字)
sortOrder いいえ 表示順序(0以上2147483647以下の整数)
virtualHost いいえ 仮想ホスト(最大1000文字)

レスポンス

{
  "response": {
    "version": "15.7.0",
    "status": 0,
    "id": "new_content_id",
    "created": true
  }
}

関連コンテンツ更新

リクエスト

PUT /api/admin/relatedcontent/setting
Content-Type: application/json

リクエストボディ

{
  "id": "existing_content_id",
  "term": "search",
  "content": "<div class='related updated'><h3>About Search</h3><p>Updated information...</p></div>",
  "sortOrder": 0,
  "virtualHost": "",
  "versionNo": 1
}

フィールド説明

フィールド 必須 説明
id はい 更新対象の関連コンテンツID(最大1000文字)
term はい 検索キーワード(最大10000文字)
content はい 表示するHTMLコンテンツ(最大10000文字)
sortOrder いいえ 表示順序(0以上2147483647以下の整数)
virtualHost いいえ 仮想ホスト(最大1000文字)
versionNo はい 楽観的ロック用のバージョン番号。setting/{id} の取得結果に含まれる値を指定します。

レスポンス

{
  "response": {
    "version": "15.7.0",
    "status": 0,
    "id": "existing_content_id",
    "created": false
  }
}

注釈

createdBycreatedTimeupdatedByupdatedTime などの監査フィールドや crudMode をリクエストボディに含めても、サーバー側で自動的に設定されるため無視されます。 作成・更新時に指定する必要はありません。

関連コンテンツ削除

リクエスト

DELETE /api/admin/relatedcontent/setting/{id}

レスポンス

{
  "response": {
    "version": "15.7.0",
    "status": 0
  }
}

使用例

製品情報の関連コンテンツ

curl -X POST "http://localhost:8080/api/admin/relatedcontent/setting" \
     -H "Authorization: Bearer YOUR_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
       "term": "product",
       "content": "<div class=\"product-info\"><h3>Our Products</h3><ul><li>Product A</li><li>Product B</li></ul></div>",
       "sortOrder": 0
     }'

サポート情報の関連コンテンツ

curl -X POST "http://localhost:8080/api/admin/relatedcontent/setting" \
     -H "Authorization: Bearer YOUR_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
       "term": "support",
       "content": "<div><p>Need help? Contact: support@example.com</p></div>",
       "sortOrder": 0
     }'

参考情報