Content Management APIs
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

カテゴリーとボキャブラリAPIの基本

LiferayのREST APIは、Liferayのカテゴリーとボキャブラリ機能のためのサービスを提供します。 APIを使用してボキャブラリを作成および編集できます。 カテゴリーをAPIに関連付けて編集することもできます。 まずは、新しいボキャブラリを追加する例を見てみましょう。

Liferay DXP 2025.Q1+/Portal GA132+ カテゴリと語彙APIは、これらの要素を参照するために外部参照コード(ERC)を使用するようになりました。これにより、インスタンス間で一貫した識別が可能になり、バッチエクスポート/インポートがサポートされて、コンテンツ管理と移植性が向上します。

語彙を追加する

新しいLiferay DXPインスタンスを起動し、以下を実行します。

docker run -it -m 8g -p 8080:8080 liferay/dxp:2025.q1.6-lts

メールアドレス test@liferay.com とパスワード testを使用して、 http://localhost:8080 で Liferay にサインインします。 プロンプトが表示されたら、パスワードを learnに変更します。

次に、以下の手順に従います。

  1. カテゴリと語彙 API の基礎をダウンロードして解凍します。

    curl https://resources.learn.liferay.com/examples/liferay-f5w3.zip -O
    
    unzip liferay-f5w3.zip
    
  2. サイトのIDを見つけます。 以下のさまざまなサービス呼び出しで ID を使用します。

  3. cURL スクリプトを使用して、サイトに新しい語彙を追加します。 コマンドラインで、curlフォルダに移動します。 サイト ID をパラメータとして TaxonomyVocabularies_POST_ToSites.sh スクリプトを実行します。

    ./TaxonomyVocabularies_POST_ToSites.sh 1234
    

    JSON応答では、新しいボキャブラリが追加されたことを示しています。

    {
       "availableLanguages" : [ "en-US" ],
       "creator" : {
          "additionalName" : "",
          "contentType" : "UserAccount",
          "familyName" : "Test",
          "givenName" : "Test",
          "id" : 20129,
          "name" : "Test Test",
          "profileURL" : "/web/test"
       },
       "dateCreated" : "2021-09-09T21:03:15Z",
       "dateModified" : "2021-09-09T21:03:15Z",
       "description" : "Foo",
       "id" : 40126,
       "name" : "Able",
       "numberOfTaxonomyCategories" : 0,
       "siteId" : 20125
    }
    
  4. 管理メニュー分類カテゴリに移動して、カテゴリ アプリケーションに移動します。 新しいボキャブラリが追加されたことを確認してください。

    新しいボキャブラリが追加されました。

  5. RESTサービスは、Javaクライアントを使って呼び出すこともできます。 curl フォルダから、 java フォルダに移動します。 以下のコマンドでソースファイルをコンパイルします。

    javac -classpath .:* *.java
    
  6. 次のコマンドで TaxonomyVocabularies_POST_ToSites クラスを実行します。 siteId値をサイトのIDに置き換えます。

    java -classpath .:* -DsiteId=1234 TaxonomyVocabularies_POST_ToSites
    

cURLコマンドの検証

TaxonomyVocabularies_POST_ToSites.sh スクリプトは、cURL コマンドを使用して REST サービスを呼び出します。

curl \
	"http://localhost:8080/o/headless-admin-taxonomy/v1.0/sites/${1}/taxonomy-vocabularies" \
	--data-raw '
		{
			"description": "Foo",
			"name": "Able"
		}' \
	--header "Content-Type: application/json" \
	--request "POST" \
	--user "test@liferay.com:learn"

ここでは、コマンドの引数を紹介します。

引数説明
-H "Content-Type: application/json"リクエストボディのフォーマットがJSONであることを示します。
-X POST指定されたエンドポイントで起動するHTTPメソッド
"http://localhost:8080/o/headless-admin-taxonomy/v1.0/sites/${1}/taxonomy-vocabularies"RESTサービスのエンドポイント
-d "{\"description\": \"Foo\", \"name\": \"Able\"}"お客様が掲載を希望するデータ
-u "test@liferay.com:learn"基本的な認証情報

ここでは、デモのために基本的な認証を使用しています。 本番環境では、 OAuth2経由でユーザーを認証する必要があります。 OAuth2 を使用するサンプル React アプリケーションについては、 OAuth2 を使用してユーザーを承認する を参照してください。

他のcURLコマンドも同様のJSON引数を使用しています。

Javaクラスを調べる

TaxonomyVocabularies_POST_ToSites.java クラスは、語彙関連のサービスを呼び出して語彙を追加します。

public static void main(String[] args) throws Exception {
	TaxonomyVocabularyResource.Builder builder =
		TaxonomyVocabularyResource.builder();

	TaxonomyVocabularyResource taxonomyVocabularyResource =
		builder.authentication(
			"test@liferay.com", "learn"
		).build();

	TaxonomyVocabulary taxonomyVocabulary =
		taxonomyVocabularyResource.postSiteTaxonomyVocabulary(
			Long.valueOf(System.getProperty("siteId")),
			new TaxonomyVocabulary() {
				{
					description = "Foo";
					name = "Baker";
				}
			});

	System.out.println(taxonomyVocabulary);
}

このクラスは、わずか3行のコードでRESTサービスを呼び出します。

行(省略形)説明
TaxonomyVocabularyResource.Builder builder = ...Builderを取得し、TaxonomyVocabularyResourceサービスインスタンスを生成します。
TaxonomyVocabularyResource taxonomyVocabularyResource = builder.authentication(...).build();基本認証を指定し、TaxonomyVocabularyResourceサービスインスタンスを生成します。
TaxonomyVocabulary taxonomyVocabulary = taxonomyVocabularyResource.postSiteTaxonomyVocabulary(...);postSiteTaxonomyVocabularyメソッドを呼び出し、投稿するデータを渡します。

プロジェクトには、依存関係としてcom.liferay.headless.admin.taxonomy.client.jarファイルが含まれていることに注意してください。 すべてのRESTアプリケーションのクライアントJAR依存関係情報は、/o/apiでインストール先のAPIエクスプローラーで確認できます。

メイン メソッドのコメントは、クラスの実行を示しています。

他の例のJavaクラスはこれと類似していますが、異なるTaxonomyVocabularyResourceメソッドを呼び出します。

重要

サービスの詳細については、 TaxonomyVocabularyResource を参照してください。

以下は、cURLとJavaを使って、他のTaxonomyVocabulary RESTサービスを呼び出す例です。

サイトからボキャブラリを取得する

次の cURL または Java コマンドを実行すると、サイトの語彙を一覧表示できます。 上記のように、1234をサイトのIDに置き換えてください。

タクソノミーボキャブラリー_GET_FromSites.sh

コマンド:

./TaxonomyVocabularies_GET_FromSites.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-admin-taxonomy/v1.0/sites/${1}/taxonomy-vocabularies" \
	--user "test@liferay.com:learn"

タクソノミーボキャブラリー_GET_FromSites.java

コマンド:

java -classpath .:* -DsiteId=1234 TaxonomyVocabularies_GET_FromSites

コード:

public static void main(String[] args) throws Exception {
	TaxonomyVocabularyResource.Builder builder =
		TaxonomyVocabularyResource.builder();

	TaxonomyVocabularyResource taxonomyVocabularyResource =
		builder.authentication(
			"test@liferay.com", "learn"
		).build();

	Page<TaxonomyVocabulary> page =
		taxonomyVocabularyResource.getSiteTaxonomyVocabulariesPage(
			Long.valueOf(System.getProperty("siteId")), null, null, null,
			Pagination.of(1, 2), null);

	System.out.println(page.getItems());
}

サイトの TaxonomyVocabulary オブジェクトは JSON 形式で表示されます。

ボキャブラリの取得

次のcURLまたはJavaコマンドを使用して、特定のボキャブラリを取得します。 1234をボキャブラリのIDに置き換えてください。

ヒント

TaxonomyVocabularies_GET_FromSites.[java|sh] を使用して Vocabulary ID を取得します。

タクソノミーボキャブラリー_GET_ById.sh

コマンド:

./TaxonomyVocabularies_GET_ById.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/${1}" \
	--user "test@liferay.com:learn"

タクソノミーボキャブラリー_GET_ById.java

コマンド:

java -classpath .:* -DtaxonomyVocabularyId=1234 TaxonomyVocabularies_GET_ById

コード:

public static void main(String[] args) throws Exception {
	TaxonomyVocabularyResource.Builder builder =
		TaxonomyVocabularyResource.builder();

	TaxonomyVocabularyResource taxonomyVocabularyResource =
		builder.authentication(
			"test@liferay.com", "learn"
		).build();

	System.out.println(
		taxonomyVocabularyResource.getTaxonomyVocabulary(
			Long.valueOf(System.getProperty("taxonomyVocabularyId"))));
}

TaxonomyVocabulary フィールドは JSON に表示されます。

ボキャブラリにパッチを適用する

次のcURLおよびJavaコマンドを使用して、既存のボキャブラリを部分的に編集します。 注: 1234をボキャブラリのIDに置き換えてください。

タクソノミーボキャブラリー_PATCH_ById.sh

コマンド:

./TaxonomyVocabularies_PATCH_ById.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/${1}" \
	--data-raw '
		{
			"description": "Bar",
			"name": "Able"
		}' \
	--header "Content-Type: application/json" \
	--request "PATCH" \
	--user "test@liferay.com:learn"

タクソノミーボキャブラリ_PATCH_ById.java

コマンド:

java -classpath .:* -DtaxonomyVocabularyId=1234 TaxonomyVocabularies_PATCH_ById

コード:

public static void main(String[] args) throws Exception {
	TaxonomyVocabularyResource.Builder builder =
		TaxonomyVocabularyResource.builder();

	TaxonomyVocabularyResource taxonomyVocabularyResource =
		builder.authentication(
			"test@liferay.com", "learn"
		).build();

	TaxonomyVocabulary taxonomyVocabulary =
		taxonomyVocabularyResource.patchTaxonomyVocabulary(
			Long.valueOf(System.getProperty("taxonomyVocabularyId")),
			new TaxonomyVocabulary() {
				{
					description = "Bar";
					name = "Baker";
				}
			});

	System.out.println(taxonomyVocabulary);
}

この例では、説明がFooからBarに変更されています。

ボキャブラリの配置

次のcURLおよびJavaコマンドを使用して、既存のボキャブラリを上書きします。 注: 1234をボキャブラリのIDに置き換えてください。

タクソノミーボキャブラリ_PUT_ById.sh

コマンド:

./TaxonomyVocabularies_PUT_ById.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/${1}" \
	--data-raw '
		{
			"description": "Goo",
			"name": "Able"
		}' \
	--header "Content-Type: application/json" \
	--request "PUT" \
	--user "test@liferay.com:learn"

タクソノミーボキャブラリ_PUT_ById.java

コマンド:

java -classpath .:* -DtaxonomyVocabularyId=1234 TaxonomyVocabularies_PUT_ById

コード:

public static void main(String[] args) throws Exception {
	TaxonomyVocabularyResource.Builder builder =
		TaxonomyVocabularyResource.builder();

	TaxonomyVocabularyResource taxonomyVocabularyResource =
		builder.authentication(
			"test@liferay.com", "learn"
		).build();

	TaxonomyVocabulary taxonomyVocabulary =
		taxonomyVocabularyResource.putTaxonomyVocabulary(
			Long.valueOf(System.getProperty("taxonomyVocabularyId")),
			new TaxonomyVocabulary() {
				{
					description = "Goo";
					name = "Baker";
				}
			});

	System.out.println(taxonomyVocabulary);
}

ボキャブラリの削除

次のcURLおよびJavaコマンドを使用して、既存のボキャブラリを削除します。 注: 1234をボキャブラリのIDに置き換えてください。

タクソノミー語彙_DELETE_ById.sh

コマンド:

./TaxonomyVocabularies_DELETE_ById.sh 1234

コード:

curl \
	"http://localhost:8080/o/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/${1}" \
	--request "DELETE" \
	--user "test@liferay.com:learn"

タクソノミーボキャブラリ_DELETE_ById.java

コマンド

java -classpath .:* -DtaxonomyVocabularyId=1234 TaxonomyVocabularies_DELETE_ById

コード:

public static void main(String[] args) throws Exception {
	TaxonomyVocabularyResource.Builder builder =
		TaxonomyVocabularyResource.builder();

	TaxonomyVocabularyResource taxonomyVocabularyResource =
		builder.authentication(
			"test@liferay.com", "learn"
		).build();

	taxonomyVocabularyResource.deleteTaxonomyVocabulary(
		Long.valueOf(System.getProperty("taxonomyVocabularyId")));
}

タクソノミーカテゴリーサービス

タクソノミーカテゴリーのcURLコマンドとJavaクラスは、タクソノミーボキャブラリと同様に機能します。 一部のサービスではタクソノミーのボキャブラリIDが必要であることに注意してください。

ファイル説明
TaxonomyCategories_GET_FromTaxonomyVocabularies.[java\|sh]ボキャブラリからカテゴリーの一覧を取得します。
TaxonomyCategories_DELETE_ById.[java\|sh]カテゴリーを削除します。
TaxonomyCategories_GET_ById[java\|sh]IDで特定のカテゴリーを取得します。
TaxonomyCategories_PATCH_ById.[java\|sh]カテゴリーにパッチを適用します。
TaxonomyCategories_POST_ToTaxonomyVocabularies.[java\|sh]カテゴリーをボキャブラリに投稿します。
TaxonomyCategories_PUT_ById.[java\|sh]カテゴリーを配置します。

API エクスプローラー には、すべての TaxonomyVocabulary および TaxonomyCategory サービスとスキーマが一覧表示され、各サービスを試すためのインターフェースがあります。

バッチエンジンによる語彙管理の改善

Liferay DXP 2025年第2四半期以降

カテゴリと語彙 API は、Liferay インスタンス間でカテゴリと語彙を移行するためのバッチエクスポートとインポートをサポートしています。 このプロセスには、関連する 権限のエクスポートとインポート、作成日や変更日、名前、その他の属性に基づいたユーザーの フィルター の処理、およびインポート中の 作成者データの維持 が含まれます。

バッチ エンジンの使用の詳細については、「バッチ エンジン API を使用したデータの エクスポート および インポート 」を参照してください。

語彙の権限

これらの API エンドポイントを使用して語彙の権限を管理します。 次の例では、 ${1} をサイト ID に置き換えます。

  1. 権限付き語彙の作成:

    ボキャブラリのエンドポイントに POST リクエストを送信して、作成中にボキャブラリにカスタム権限を割り当てます。 指定されたロールはシステムにすでに存在している必要があります。 ロールが存在しない場合は、API は 404 エラーを返します。

    例:

    curl \
       "http://localhost:8080/o/headless-admin-taxonomy/v1.0/sites/${1}/taxonomy-vocabularies" \
       --data-raw '
          {
             "description": "Foo",
             "name": "Able",
             "permissions": [
                   {
                      "roleName": "Role1",
                      "actionIds": ["VIEW", "UPDATE"]
                   },
                   {
                      "roleName": "Role2",
                      "actionIds": ["VIEW"]
                   }
             ]
          }' \
       --header "Content-Type: application/json" \
       --request "POST" \
       --user "test@liferay.com:learn"
    

    権限 配列は、語彙のロールおよびそれに関連付けられた権限を指定します。 権限が定義されていない場合は、ロールに割り当てられたデフォルトの権限で語彙が作成されます。

  2. 語彙権限を取得:

    デフォルトでは、語彙の権限は応答に含まれません。 これらを取得するには、クエリに nestedFields=permissions を追加します。

    例:

    curl \
       "http://localhost:8080/o/headless-admin-taxonomy/v1.0/sites/${1}/taxonomy-vocabularies?nestedFields=permissions" \
       --user "test@liferay.com:learn"
    
  3. パッチ語彙権限:

    作成時に権限を割り当てる方法と同様に、 PATCH リクエストを使用して既存のボキャブラリの権限を更新できます。

    例:

    curl \
       "http://localhost:8080/o/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/${1}" \
       --data-raw '
          {
             "description": "Bar",
             "name": "Able",
             "permissions": [
                   {
                      "roleName": "Role1",
                      "actionIds": ["VIEW", "UPDATE", "DELETE"]
                   },
                   {
                      "roleName": "Role2",
                      "actionIds": ["VIEW", "PERMISSIONS"]
                   }
             ]
          }' \
       --header "Content-Type: application/json" \
       --request "PATCH" \
       --user "test@liferay.com:learn"
    

データをフィルタリング

クエリ パラメータを使用してエクスポートされたデータを調整します。

curl \
   "http://localhost:8080/o/headless-batch-engine/v1.0/export-task/com.liferay.headless.admin.taxonomy.client.dto.v1_0.TaxonomyVocabulary/JSON?taskItemDelegateName=Tech&filter=name%20eq%20%27Tech%27" \
	--header "Content-Type: application/json" \
	--request "POST" \
	--user "test@liferay.com:learn"

この例では、クエリ パラメータは次のようになります。

  • バッチ エンジン API を使用してエクスポート タスクを開始するには、 http://localhost:8080/o/headless-batch-engine/v1.0/export-task/ を使用します。

  • com.liferay.headless.admin.taxonomy.client.dto.v1_0.TaxonomyVocabulary/JSON は、エクスポートするデータのタイプを指定します(この場合は、JSON形式のTaxonomy Vocabularyデータ)。 TaxonomyVocabulary は、語彙を表す役割を担う API のクラスを指します。

  • taskItemDelegateName=Tech はエクスポートする語彙を指定します。 この例では、値 Tech は、 Techという名前の語彙に対応します。 この値を、エクスポートする語彙の名前に置き換えます。

  • filter=name%20eq%20%27Tech%27 はエクスポートによって返されるデータを絞り込みます。 フィルター クエリ パラメータはここで URL エンコードされます (name%20eq%20%27Tech%27)。 フィルター クエリの人間が読めるバージョンは filter=name eq 'Tech'です。 エンコードされたバージョンは、リクエストを行う際に適切なフォーマットを保証するために URL で使用されます。

クリエイターデータの維持

語彙をインポートするときは、クエリパラメータ importCreatorStrategy を使用して、作成者データの処理方法を定義します。 creatorStrategy パラメータは、作成者がターゲット システムに存在しない場合に何が起こるかを決定します。

次のパラメータを使用できます:

  • creatorStrategy=INSERT

    指定された作成者がターゲット システムに存在しない場合は、新しいユーザーが作成者として追加されるようにします。 これは、 importCreatorStrategy=KEEP_CREATOR を使用して、インポート中に不足しているクリエイターが追加されるようにする場合に必要です。

  • importCreatorStrategy=KEEP_CREATOR

    エクスポートされたデータに指定された元の作成者を保持します。 作成者がターゲット システムに存在しない場合は、 creatorStrategy=INSERT も設定されていない限り、インポートは失敗します。

  • importCreatorStrategy=OVERWRITE_CREATOR

    元の作成者をインポートするユーザーに置き換えます。 インポートされたすべての語彙は、元の作成者の情報に関係なく、インポートを実行したユーザーに割り当てられます。

importCreatorStrategy が省略された場合、システムはデフォルトで OVERWRITE_CREATORを使用します。

以下に例を示します。

curl \
	"http://localhost:8080/o/headless-batch-engine/v1.0/import-task/com.liferay.headless.admin.taxonomy.dto.v1_0.TaxonomyVocabulary?siteId=20110&creatorStrategy=INSERT&importCreatorStrategy=KEEP_CREATOR" \
	--data-raw '
		[
			{
				"name": "Example Vocabulary",
				"description": "A sample vocabulary for testing."
			}
		]' \
	--header "Content-Type: application/json" \
	--request "POST" \
	--user "test@liferay.com:learn"